2013-05-15 30 views
0

我有一個引用了js文件夾的javascript文件的母版頁。 文件和主頁面都在根目錄中。對javascript文件的動態引用

我的許多形式在不同的文件夾一樣

Root>first>abc.aspx 
    Root>second>def.aspx 
    Root>second>anotherFolder>def.aspx 

我一直喜歡這個

 <script type="text/javascript" src="js/Check.js"></script> 

我也試過src="<%= Page.ResolveUrl("~/js/Check.js") %>"src="~/js/Check.js"參考。使用Page.ResolveUrlServer.ResolveUrl頁面顯示錯誤。

我需要做什麼,以便任何目錄中的任何窗體獲得該文件的引用。 我不想做任何形式的../../../

回答

4
<script type="text/javascript" src="/js/Check.js"></script> 

你可以使用「/」 - >網站的根目錄

+0

實際路徑爲http :// localhost:1500/AppName/js/Check.js並用「/」引用http:// localhost:1500/js/Check.js。錯誤仍然存​​在。 –

+0

你使用虛擬目錄嗎? –

+0

是的我使用虛擬目錄 –

1

如果你運行你的Visual Studio的內部服務器進行調試,然後先刪除它堅持使用虛擬文件夾。

選擇您的網站在VS解決方案資源管理器的根目錄執行此操作,然後單擊鼠標右鍵,選擇「屬性窗口」 - 在屬性更改「虛擬路徑」從「APPNAME」到/

這種虛擬路徑會對各種路徑造成嚴重破壞......我發現如果我不在VS中做這個改變,那麼當我讓所有的路徑工作的時候,當我把這個站點放到一個不活動的服務器上時,它們將不起作用使用虛擬網站。

然後將您的JS引用設置爲<script type="text/javascript" src="/js/Check.js"></script> - 在您的src中使用根/

UPDATE

如果你真的想保持虛擬文件夾,那麼你可以試試這個 - 使用ResolveClientUrl()

首先,添加Runat="Server"<head>

<head runat="server" id="myhead"> 

<script type="text/javascript" src='<%=ResolveClientUrl("~/js/check.js") %>' /> 
+0

好點。謝謝。有沒有刪除虛擬文件夾,即代碼 –

+0

有另一種方式如果你不打算把它放在服務器上的虛擬目錄,那麼我強烈建議不要試圖破解它。它變得非常雜亂。 – Darren

+0

使用Code version更新答案... – Darren