2010-06-10 40 views
0

我有一個IIS網站。這個網站包含其他網站,所以結構是這樣的。相對引用CSS和JavaScript文件的問題

\ 
MainWebSite\ 
     Scripts\ 
     CSS\ 
     App1\ 
      Scripts\ 
      CSS\ 
     App2\ 
      Scripts\ 
      CSS\ 

所有站點都是ASP.NET MVC Web應用程序。

在應用1的MasterPage,我引用的腳本文件是這樣的:

<script type="text/javascript" src="../../Scripts/jquery-ui-1.8.custom.min.js"> 
</script> 

的問題是,它現在試圖找到在http文件:\服務器\ MainWebSite \腳本....

我該如何解決這個問題?我應該把我所有的腳本和CSS文件放到根目錄下,這是一個首選的解決方案嗎?

+0

你能澄清究竟是什麼問題嗎?是否有不同目錄中的頁面,以便相對鏈接斷開? – 2010-06-10 11:19:06

+1

您的腳本和css文件是否位於MainWebSite \ Scripts中? – IsmailS 2010-06-10 11:25:52

+0

不,但你不知道,斯里,他們就像我現在添加! – Markus 2010-06-10 11:36:48

回答

4

在ASP.NET中存在一個很大的功能是Page對象的一部分:

ResolveUrl(String) 

這是通過在相對字符串中使用,但最好的部分是你可以使用〜象徵您的網站的根目錄:

<script type="text/javascript" src='<%=ResolveURL("~/PATH_FROM_ROOT/Scripts/jquery-ui-1.8.custom.min.js")%>'></script> 

[注單引號]

+0

這就是我所需要的!真棒!謝謝! – Markus 2010-06-10 11:53:01

+0

我知道這是無關緊要的評論,因爲任何開發人員都會知道,而且Markus理解他自己。還是想說你還沒有關閉括號和渲染塊。 – IsmailS 2010-06-10 12:12:00

+0

謝謝,應該修復 – 2010-06-15 11:59:23

0

最好的解決方案是使用CSS和JavaScript的絕對URL。使用附加的全局變量,您也可以在開發系統上使用它。

1

試試這個

<script type="text/javascript" src="~/../Scripts/jquery-ui-1.8.custom.min.js" runat="server"></script> 

在上面的標記,我假設你的腳本文件在MainWebSite \腳本\

從您的應用程序根目錄「〜」帶來的reletive參考。好處是,如果您將母版頁文件從MainWebSite\App1\轉換爲MainWebSite\App1\MasterPages\,則不必更改母版頁中所有相對引用的網址。

+1

〜只有在服務器控制或使用ResolveURL功能時才能工作。並且在ASP.NET中,您不能爲JS – 2010-06-10 11:30:16

+0

製作腳本標記runat =「server」感謝@Bob讓我知道。 :) – IsmailS 2010-06-10 12:06:36