2011-05-25 20 views
1

我想包括像這樣.net - javascript src的相對url?

<script type="text/javascript" runat="server" src="~/file.js"></script> 

的想法是,我想包括通過相對路徑,而不是絕對路徑file.js javascript文件,我想.NET找出相應的目錄(即是./或../,還是../../等)。

但是,當我嘗試上面的代碼,我得到編譯錯誤。

我是否正確地包含一個JavaScript文件?

+0

你MVC-ing或香草ASP.Net? – 2011-05-25 20:50:48

+0

只是基本的asp.net 3.5 – John 2011-05-25 21:29:40

回答

3

你可以試試這個...

剃刀:

<script type="text/javascript" src="@Url.Content("~/file.js")"></script> 

的WebForms:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/file.js")%>"></script> 
+0

我得到webforms方法的解析錯誤:解析器錯誤消息:服務器標記不能包含<% ... %>構造。 – John 2011-05-25 21:31:30

+0

對不起,我不小心把runat =「server」留下了。作爲一個提示,我已經使用WebForms已經有好幾年了。 – Brian 2011-05-25 21:45:01

+0

我如何得到這個錯誤:CS0103:名稱'Url'在當前上下文中不存在 – John 2011-05-26 01:51:16

1

請記住,path-arelativity'對瀏覽器來說最重要。路徑必須與您正在查看的PAGE的地址相關。這就是爲什麼可能與使用它們的頁面不在同一文件夾中的控件和母版頁面會盡力控制它們包含的資源的路徑,以便它們能夠正常工作。

因此,在你的情況下,放棄runat =部分,如果file.js位於應用程序的根目錄下,則應該很好。

+0

但如果我只包括,包括從Default.aspx工作,但包括從子目錄/ Default.aspx不起作用 – John 2011-05-25 21:30:29

0

如果你使用MVC,你可以使用

<script type="text/javascript" src="@Url.Content("~/file.js")" />