7

我们的基本 Masterpage 有如下内容

  <head runat="server">
   <title></title>

   <script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/actions.js")%>"></script>
   <script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/jquery/jquery-1.2.6.min.js")%>"></script>
   <asp:contentplaceholder id="cph_htmlhead" runat="server">

   </asp:contentplaceholder>
  </head>

如果此 Masterpage 是 ASPX 页面的 Masterpage,则一切正常。

如果这个 Masterpage 是子 Masterpage 的 Masterpage,然后一个新的 ASPX 页面使用子 Masterpage,因为它是 MasterPage,我们看到:

“”应用程序中的服务器错误。

无法修改 Controls 集合,因为该控件包含代码块(即 <% ... %>)。

在基本 Masterpage 中包含全局资源(Javascript/CSS)的首选方法是什么,保留波浪号(~)样式的相对路径?

4

3 回答 3

10

使用 ScriptManager 服务器控件:

  <asp:ScriptManager ID="myScriptManager" runat="server">
    <Scripts>
      <asp:ScriptReference Path = "~/javascript/actions.js" /> 
      <asp:ScriptReference Path = "~/javascript/jquery/jquery-1.2.6.min.js" />
    </Scripts>
  </asp:ScriptManager>
于 2008-10-08T21:11:43.797 回答
5

你有没有尝试过:

<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script>
于 2008-10-08T17:31:20.823 回答
4

根据ScottGu

要利用的一个技巧是 head runat="server" 控件提供的相对路径修复支持。您可以在 Master Pages 中使用它来轻松引用在整个项目中重复使用的 .CSS 样式表(无论项目是根引用还是子应用程序):

然后,head 控件的路径修复功能将采用相对 .CSS 样式表路径,并在运行时正确输出样式表的绝对路径,无论它是根引用的网站还是子应用程序的一部分。

于 2008-10-08T17:23:58.530 回答