如何添加特定于页面的脚本链接(使用母版页的MVC)

我对包含母版页和脚本标签感到困惑。我有几个我想要包含的脚本(* .js)文件,并不是所有文件都与每个页面相关。我正在使用Master页面,似乎我只能在母版页中执行此操作。 但我认为这是一种浪费,我认为我需要在母版页中包含所有JS文件。这意味着我将在不使用所有页面的情况下加载JS文件。 有一个更好的方法吗 ?     
已邀请:
首先在主页面中添加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>
    
您可以向ViewModel添加一些属性以标记所需的js文件。 在制作中,我建议将所有js文件合并为一个并使用js minifier。 这将减少静态资源对服务器的调用次数。 如果你的js文件大小不大,我建议使用第二个选项。 还有另一种选择,但它更复杂。您可以创建http扩展,它将以流畅的方式加载您的js文件并根据页面需要将它们组合并直接将它们推送到响应中。     
另一种可能更适合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,它提供了对各种主页问题的非常有用的讨论,包括解决这个问题的几种方法。     

要回复问题请先登录注册