2008-11-12 30 views
1

這可能是一個痛苦的簡單問題,我將被嘲笑,但是我在使用masterpages中的文件路徑時遇到困難。我相信這是因爲如果一個子目錄中的頁面使用母版頁,那麼文件路徑不正確。處理ASP.Net和Masterpages中的相關文件路徑

要解決這個問題,我需要從根獲得文件路徑,但我似乎無法得到它的工作。

我想:

  <script type="text/javascript" src="~/jQueryScripts/jquery.js"></script> 

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

沒有運氣要麼!

有關如何告訴它從根獲取文件路徑的任何想法?謝謝:)

回答

2

我只是假設通過filepath,你實際上意味着URL(或uri,我忘記哪一個是部分)。

沒有〜,第一個例子應該工作。 <script type="text/javascript" src="/jQueryScripts/jquery.js"></script>將導致瀏覽器請求http://www.example.com/jQueryScripts/jquery.js(其中www.example.com是您的域名)。

1

我相信你需要在的<head>標記中有runat=server這個URL重定位工作。

<head runat="server"> 
+0

呀,已經有了。沒有運氣:( – Damien 2008-11-12 14:45:00

+0

那麼,至少你對於被問到一個「痛苦簡單」問題「嘲笑」的理解是沒有根據的,結果是一個具有挑戰性的問題,這是一個很好的問題。 – DOK 2008-11-12 15:09:07

1

首先,前面的波浪號是用於服務器控件的asp.net事物,不適用於基本的HTML。

在沒有詳細解釋的情況下,您可以在前面使用斜槓(/),並且包含Web應用程序名稱(如果它不是根站點)。

或者您可以將代碼放入您的母版頁中以動態包含腳本,並讓它處理路徑。像:

public void AddJavascript(string javascriptUrl) 
    { 
     HtmlGenericControl script = new HtmlGenericControl("script"); 
     script.Attributes.Add("type", "text/javascript"); 
     javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version; 
     script.Attributes.Add("src", ResolveUrl(javascriptUrl)); 
     Page.Header.Controls.Add(script); 
    } 

上面的代碼還附加了程序集版本。我主要用這種方式進行開發,所以每次構建時我的JavaScript文件都會更新。

1

您可以使用Page.ResolveUrl方法來解決這個問題

例如:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>