我试图找出正确的Razor语法,以便将特定*.cshtml文件的JavaScript文件与在_Layout.cshtml中定义的所有其他包含文件一起放在标签中。
你可以使用命名的区域。
_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>
}
<script>
标签的闭合标签的好提示 - 我不知道这一点(还没有尝试使用JS命名部分)。现在我(和其他人)会知道了。 - RPM1984</body>
标签之前,而不是 head 标签中。这样可以避免阻止浏览器的并行下载。详见 http://developer.yahoo.com/performance/rules.html。 - Peter为了进一步阐述Stephen Patten的答案,并完全更改我之前的回答:
你可以在文件中的任何位置添加@RenderSection("JavaScript", required: false)
代码行。这意味着它不必在head
标签甚至footer
标签中。在我正在工作的代码中,它在一个div
中。
此外,您必须将此行代码放入包含脚本的部分的任何.cshtml
文件的父文件中。这允许嵌套带有脚本的部分,而无需在原始父文件或子文件中包含所有脚本。换句话说,仅在“布局”或原始父文件中具有RenderSection
代码并不会自动级联到嵌套的部分。
这样做的一个缺点是,您的脚本将分散在为浏览器呈现的HTML文件中。这可能会导致调试困难,包括意外地具有相同名称的多个脚本方法或多次包含相同的外部脚本。