我对包含母版页和脚本标签感到困惑。我有几个我想要包含的脚本(* .js)文件,并不是所有文件都与每个页面相关。我正在使用母版页,似乎我只能在母版页中执行此操作。
但我认为这是一种浪费,我认为我需要在母版页中包含所有JS文件。这意味着我将在不使用所有页面的情况下加载JS文件。
有更好的方法吗?
答案 0 :(得分:2)
首先在母版页中添加ContentPlaceHolder:
<head runat="server">
<title>My awesome master page</title>
<script type="text/javascript" src="global.js"></script>
<asp:ContentPlaceHolder ID="foo" runat="server" />
</head>
通过ContentPlaceHolder
从您的页面添加其他脚本<asp:Content ContentPlaceHolderID="foo" runat="server">
<script src="specific.js" type="text/javascript"></script>
</asp:Content>
答案 1 :(得分:1)
如果您的js文件大小不大,我建议使用第二个选项。
还有另一种选择,但它更复杂。您可以创建http扩展,它将以流畅的方式加载您的js文件并根据页面需要将它们组合并直接将它们推送到响应中。
答案 2 :(得分:0)
另一种可能更适合tkalve建议的方式,以编程方式执行此操作...
HtmlLink jsLink = new HtmlLink();
jsLink.Href = "~/scripttoload.js";
jsLink.Attributes.Add("type", "text/javascript");
Header.Controls.Add(jsLink);
但是页面(母版页)的标题必须声明为runat =“server”才能执行此操作。查看http://odetocode.com/code/450.aspx,它提供了对各种主页问题的非常有用的讨论,包括解决此问题的几种方法。