ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在尝试找出正确的 Razor 语法,以获取特定 *.cshtml 的 JavaScript 文件,以及在 _Layout.cshtml 中定义的所有其他包含文件。

您还应该考虑将 js 放在页面底部而不是头部。
我在示例代码中发现的唯一问题是 @section "JavaScript" 不需要用引号引起来。
还有一件事:如果这是一个 JavaScript 标记,请注意使用,我需要使用脚本元素的 END 标记才能使其正确运行。 ;
@Mattias Jakobsson - 并非总是如此。这取决于具体情况。
@Dimskiy,如果您允许我成为单词解析器和书呆子,那么您确实应该始终考虑将 js 放在底部,无论您是否真的将它放在那里。

H
Hayha

您可以使用 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>
}

是的,我正在查看 WebPageBase 并猜测这可能是答案,但不太了解正确的语法。您能推荐 MVC 3 的参考指南吗?问候..
哈!我希望有 MVC 3 和 Razor 语法的参考指南。我从顾的博客上得到了以上内容。 MVC 3 的最佳参考可能是发行说明。
哦,好的提示 wrt wrt <script> 标签的关闭标签 - 不知道(尚未尝试使用 JS 命名部分)。现在我(和其他人)会知道
仅供参考:Javascript 应该在 </body> 标记之前而不是在 head 标记中呈现。这样就不会阻止浏览器进行并行下载。请参阅developer.yahoo.com/performance/rules.html
@Peter - 是的,我知道 - 但我只是在解决答案(头部标签中的 JS)。
c
computercarguy

要扩展 Stephen Patten 的答案,并完全更改我以前版本的此答案:

您几乎可以在文件中的任何位置添加 @RenderSection("JavaScript", required: false) 行。意思是,它不必在 head 甚至 footer 标记中。在我正在寻找工作的代码中,它位于 div 中。

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

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