在 VS 2008 嵌套母版页中包含对 JavaScript 的相对引用的首选方法

Preferred way to include relative reference to JavaScript in VS 2008 nested Masterpage

提问人:KP. 提问时间:10/9/2008 最后编辑:Gulzar NazimKP. 更新时间:7/5/2012 访问量:6874

问:

我们的基本母版页如下所示

  <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>

如果此母版页是 ASPX 页的母版页,则一切正常。

如果此母版页是子母版页的母版页,然后新的 ASPX 页使用子母版页作为母版页,我们将看到:

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

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

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

asp.net JavaScript 母版页 相对路径 嵌套

评论


答:

4赞 Gulzar Nazim 10/9/2008 #1

根据 ScottGu 的说法,

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

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

5赞 Shawn Miller 10/9/2008 #2

你试过吗:

<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script>

评论

0赞 KP. 10/9/2008
我们目前正在使用重磅 (#) include 来调用 databind() 在基本主代码后面的 head 元素上。但我正在寻找一些具体/最佳实践。
11赞 Kon 10/9/2008 #3

使用 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>