问题 MVC5为什么在标准_Layout.cshtml中@RenderBody下面的@ Scripts.Render


当我生成一个MVC5应用程序时,_Layout.cshtml有 @Scripts.Render 在文件的最后 @RenderBody()。如果我将.js添加到使用jquery的index.cshtml中,我会感到害怕“$ 是未定义的“错误。

我知道解决这个问题的唯一方法是移动 @Scripts.Render 到了 <head> 部分。

什么是正确的方法?

提前致谢!


2951
2018-05-20 22:02


起源



答案:


@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>**

}

13
2018-05-20 23:55



对,我很确定是这样的。但是我放在index.cshtml底部的javascript:<script src =“@ Url.Content(”〜/ Scripts / bpindex.js“)”type =“text / javascript”> </ script>因为这个需要在jquery js文件之前出现,如果我添加的js文件是在jquery包含之前发生了怎么办? - Mike Witt
@MikeWitt请看我编辑的版本 - Toan Nguyen
谢谢@ToanNguyen,你的答案确实很好。 - Mike Witt


答案:


@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>**

}

13
2018-05-20 23:55



对,我很确定是这样的。但是我放在index.cshtml底部的javascript:<script src =“@ Url.Content(”〜/ Scripts / bpindex.js“)”type =“text / javascript”> </ script>因为这个需要在jquery js文件之前出现,如果我添加的js文件是在jquery包含之前发生了怎么办? - Mike Witt
@MikeWitt请看我编辑的版本 - Toan Nguyen
谢谢@ToanNguyen,你的答案确实很好。 - Mike Witt