从捆绑视图中将 Javascript 添加到 ASP.NET/MVC 网页的页眉部分?

Add Javascript to header section of an ASP.NET/MVC web page from a view with bundling?

如果找到这个 Stack Overflow 页面,它会向您展示如何将 Javascript 添加到 ASP.NET/MVC (Razor) 视图,以便它最终出现在 HEAD 中网页部分:

Add CSS or JavaScript files to layout head from views or partial views

效果很好。但是我想知道是否有一种方法可以利用捆绑的方式来做到这一点?我发现这个 SO post 说不可能使用一种叫做 Cassette 的东西,但它是从 2012 年开始的,所以我想知道现在是否有一种方法可以做到 ASP.NET/MVC/剃刀:

MVC Bundles: How to add assets in views and have them render combined with the main layout page bundle

我发现这个 SO post 谈到动态添加新包,但它似乎只将它们添加到 BODY 部分,而不是 HEAD:

MVC Bundles: How to add assets in views and have them render combined with the main layout page bundle

你的评论让我明白了你现在想做什么。至于从视图中渲染出包,它的工作方式与第一个问题的答案相同。

首先,为您想要的文件制作一个包。

BundleConfig.cs

bundles.Add(new ScriptBundle("~/bundles/mySpecialBundle").Include(
                      "~/Scripts/notOftenUsedScript.js",
                      "~/Scripts/someOtherScript.js"));

接下来,在您的布局中,定义一个您希望能够呈现 JavaScript 包的部分。

_layout.cshtml

@RenderSection("scripts", required: false)

现在,在您想要呈现特殊包的任何视图中,请参考此部分并使用与您在布局页面中用于包呈现的语法相同的语法。

ExampleView.cshtml

@section scripts{
    <!---Test section rendering-->
    @Scripts.Render("~/bundles/mySpecialBundle")
}

@Scripts.Render@Styles.Render 可以在您应用程序的任何剃须刀页面上使用。使用该部分允许我们控制视图页面的输出在母版页中的位置。

话虽如此,如果 JS 确实是轻量级的,那么在您的用户第一次点击带有特殊包的页面后,它应该由他们的浏览器缓存。因此,始终在您的布局中使用此功能对性能的影响可能在第一页点击时是最小的,而在之后的每个页面点击时都不存在。