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


当前回答

您可以使用命名节。

_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)行。意思是,它不必在页眉甚至页脚标签中。在我正在寻找工作的代码中,它在一个div中。

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

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

您可以使用命名节。

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