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

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

172168 次浏览

你可以使用Named Sections. "

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

扩展Stephen彭定康s的答案,并完全改变这个答案的以前版本:

你可以在文件的任何地方添加@RenderSection("JavaScript", required: false)行。这意味着,它不必在head或甚至footer标记中。在我正在寻找工作的代码中,它在div中。

此外,你必须将这一行放入任何.cshtml文件中,该文件是包含脚本的部分的父文件。这允许用脚本嵌套部分,而不必在原始的父或子脚本中包含所有脚本。换句话说,只要在“布局”中有RenderSection代码;或者原始父文件不会自动级联到嵌套的部分。

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