在MVC5中为什么在_Layout.cshtml中将@ Scripts.Render放在@RenderBody标准之下

时间:2014-05-20 22:02:40

标签: jquery razor asp.net-mvc-5

当我生成MVC5应用时,_Layout.cshtml@Scripts.Render之后的文件末尾有@RenderBody()。如果我在使用jquery的.js中添加index.cshtml,我会感到害怕" $未定义"错误。

我知道解决此问题的唯一方法是将@Scripts.Render移至<head>部分。

什么是正确的方法?

提前致谢!

1 个答案:

答案 0 :(得分:14)

@Scripts.Render应位于页面的底部。否则,您将有可能访问脚本运行时尚未加载的页面元素。

编辑:

如果要包含自定义脚本文件,有两种方法:

<强> 1 即可。在 BundleConfig.cs 中,为脚本添加新的包

 *bundles.Add(new ScriptBundle("~/bundles/UserScripts").Include("~/Scripts/MyScripts.js"));*

接下来,在 _Layout.cshtml 中,在jQuery bundle之后渲染脚本包:

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")

    @* Render the custom bundles *@
    @Scripts.Render("~/bundles/UserScripts")

2. 或者在 Index.cshtml 文件中添加新的脚本部分:

@section scripts {

    <script src="~/Scripts/MyScripts.js"></script>**

}