ASP.NET MVC 3 Razor:在 head 标签中包含 JavaScript 文件

我试图找出正确的Razor语法,以获得特定*.cshtml的JavaScript文件以及_Layout.cshtml中定义的所有其他包含文件一起位于head标签中。


答案 1

您可以使用命名节

_Layout.cshtml

<head>
    <script type="text/javascript" src="@Url.Content("/Scripts/jquery-1.6.2.min.js")"></script>
    @RenderSection("JavaScript", required: false)
</head>

_SomeView.cshtml

@section JavaScript
{
   <script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")"></script>
   <script type="text/javascript" src="@Url.Content("/Scripts/AnotherScript.js")"></script>
}

答案 2

扩展斯蒂芬·彭定康的答案,并完全改变我以前的这个答案的版本:

您几乎可以在文件中的任何位置添加该行。这意味着,它不必在标签中,甚至不必在标签中。在我正在查看的工作代码中,它位于.@RenderSection("JavaScript", required: false)headfooterdiv

此外,您必须将此行放入作为部分包含脚本的父级的任何文件中。这允许使用脚本嵌套部分,而不必在原始父级或子级中包含所有脚本。换句话说,简单地将代码放在“布局”或原始父文件中并不会自动级联到嵌套的部分。.cshtmlRenderSection

需要注意的是,您的脚本将分散在为浏览器呈现的结果 HTML 文件中。这可能会导致调试困难,包括意外地具有多个具有相同名称的脚本方法或多次包含相同的外部脚本。