Asp.net

ASP.Net 母版頁和文件路徑問題

  • March 30, 2009

我正在嘗試在我的母版頁中添加對 jQuery 的腳本引用,以便它適用於任何頁面。目前看起來像這樣

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

問題是路徑總是相對於正在執行的 aspx 頁面,所以這只有在“jquery.js”文件位於同一文件夾中時才有效。為了使它起作用,我必須將行更改為:

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

這顯然不太理想,因為它僅適用於距根文件夾兩層深的頁面。如果我嘗試以下操作,IIS 會引發有關意外字元的錯誤。

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

有任何想法嗎?

**編輯:**我也忘了提到腳本必須在 head 標籤中

目前的最佳答案在我將其添加到我的母版頁時會引發“ *ASP.NET Ajax 客戶端框架無法載入。 ”錯誤。*它是從 javascript 而不是 .Net 編譯器拋出的。如果我將 ScriptManager 移動到應該在的 head 部分,我會收到一個關於 ScriptManager 需要位於表單標記內的編譯錯誤。

第三個答案從編譯器拋出“路徑中的非法字元。 ”異常

**編輯 2:**當我將該行添加到我的 head 標籤時,我從 IIS 收到此錯誤。

無法修改 Controls 集合,因為該控制項包含程式碼塊(即 <% … %>)

**已解決:**我從下面的答案中獲取了編輯後的響應並將其放入asp:ContentPlaceHolder元素中

您可以使用ScriptManager

&lt;asp:ScriptManager ID="ScriptManager1" runat="server"&gt;
   &lt;Scripts&gt;
       &lt;asp:ScriptReference Path="~/jquery.js" /&gt;
   &lt;/Scripts&gt;
&lt;/asp:ScriptManager&gt;

**編輯:**如果你在你的部分絕對需要這個&lt;head&gt;,你可以這樣做:

&lt;head&gt;
   &lt;script type="text/javascript" 
       src="&lt;%= Page.ResolveClientUrl("~/jquery.js") %&gt;"&gt;&lt;/script&gt;
&lt;/head&gt;

**編輯2:**根據評論,如果您觀察到

無法修改 Controls 集合,因為該控制項包含程式碼塊(即 <% … %>)

您可能需要更改以上內容以使用數據綁定語法:

&lt;head&gt;
   &lt;script type="text/javascript" 
       src="&lt;%# Page.ResolveClientUrl("~/jquery.js") %&gt;"&gt;&lt;/script&gt;
&lt;/head&gt;

引用自:https://stackoverflow.com/questions/697660