嵌入在MVC3 Razor视图中的脚本标签

3

第一个MVC项目,想知道管理这个项目的最佳方法是什么。

我正在创建的所有视图都包含以下内容:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

我希望将我的 js 代码放在 body 标签结束之前。我知道我可以将它移到 layout.cshtml 文件中,但我想知道是否有一种更优雅的 MVC/Razor 的方法来实现这个目标(特别是当我有仅在某些视图中使用的 js 文件时,不想全局加载)。

我该如何实现这个目标呢?

1个回答

5

我把我的全局脚本放在_Layout.cshtml中,然后为我只想从某些视图中包含的脚本定义一个部分

例如,在layout.cshtml中:

<body>
...
<script src="@Url.Content("~/Scripts/global1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/global2.js")" type="text/javascript"></script>
@RenderSection("FooterScripts", false)
</body>
</html>

如果在视图中需要脚本,我不想全局引入:

@section FooterScripts
{
    <script src="@Url.Content("~/Scripts/local.js")" type="text/javascript"></script>
}

@MikeEdenfield 为什么我们需要指定 false 呢?我的智能感知显示有一个 *@RenderSection(string)*。这是新添加的吗(因为我看到这篇文章快4年了)? - Konrad Viltersten
这里的false参数意味着该部分不是必需的。如果视图中不存在这样命名的部分,则将忽略它。没有布尔参数的重载行为就像您传递了true一样。 - Michael Edenfield

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接