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


230

我正在尝试找出适当的Razor语法,以将特定* .cshtml的JavaScript文件与_Layout.cshtml中定义的所有其他包含文件一起放在head标签中。


7
您还应该考虑将js放在页面底部而不是头部。
Mattias Jakobsson

我在示例代码中发现的唯一问题是@section“ JavaScript”不需要用引号引起来。
斯蒂芬·帕滕

2
还有一件事:如果这是JavaScript标记,请注意用法,我需要使用script元素的END标记才能使其正确运行。<script type =“ text / javascript” src =“ @ Url.Content(”〜/ Scripts / RDA.js“)”> </ script>;
Stephen Patten 2010年

@Mattias Jakobsson-并非总是如此。这取决于具体情况。
Dimskiy 2011年

@Dimskiy如果您允许我成为文字解析器和学究者,那么无论您是否实际将js放在底部,您都应该始终考虑。
MrBoJangles 2013年

Answers:


398

您可以使用命名节

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

1
是的,我在查看WebPageBase时,已经猜到可能是答案,但并不十分了解正确的语法。您可以推荐MVC 3的参考指南吗?问候..
斯蒂芬·帕滕

8
哈!我希望这里有MVC 3和Razor语法的参考指南。我从顾的博客上得到了上述内容。MVC 3的最佳参考可能是发行说明。
RPM1984

哦,提示该标签的关闭标签<script>-不知道(还没有尝试使用JS命名节)。现在我(和其他人)将知道
RPM1984

4
仅供参考:Javascript应该在</body>标记之前而不是在head标记中呈现。这样一来,它就不会阻止浏览器并行下载。请参阅developer.yahoo.com/performance/rules.html
Peter

4
@Peter-是的,我知道-但我只是在解决答案(head tag中的JS)。
RPM1984 '12
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.