我正在尝试找出正确的 Razor 语法,以获取特定 *.cshtml 的 JavaScript 文件,以及在 _Layout.cshtml 中定义的所有其他包含文件。
您可以使用 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 Patten 的答案,并完全更改我以前版本的此答案:
您几乎可以在文件中的任何位置添加 @RenderSection("JavaScript", required: false)
行。意思是,它不必在 head
甚至 footer
标记中。在我正在寻找工作的代码中,它位于 div
中。
此外,您必须将此行放入作为部分包含脚本的父级的任何 .cshtml
文件中。这允许使用脚本嵌套部分脚本,而不必在原始父级或子级中包含所有脚本。换一种说法,只是在“布局”或原始父文件中包含 RenderSection
代码不会自动级联到嵌套的部分。
需要注意的是,您的脚本将分散在为浏览器呈现的生成的 HTML 文件中。这可能会导致调试困难,包括意外拥有多个具有相同名称的脚本方法或多次包含相同的外部脚本。
<script>
标签的关闭标签 - 不知道(尚未尝试使用 JS 命名部分)。现在我(和其他人)会知道</body>
标记之前而不是在 head 标记中呈现。这样就不会阻止浏览器进行并行下载。请参阅developer.yahoo.com/performance/rules.html