【问题标题】:In MVC5 Why is placing @Scripts.Render below @RenderBody standard in _Layout.cshtml在 MVC5 为什么将 @Scripts.Render 置于 _Layout.cshtml 中的 @RenderBody 标准之下
【发布时间】:2014-07-09 08:38:56
【问题描述】:

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

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

正确的做法是什么?

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

    编辑:

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

    1。在 BundleConfig.cs 中,为您的脚本添加一个新包

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

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

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

    【讨论】:

    • 是的,我很确定确实如此。但是我放在 index.cshtml 底部的 javascript: 既然这样需要在jquery js文件之前,如果我添加的js文件在jquery include之前怎么办?
    • 谢谢@ToanNguyen,你的回答确实很好。
    猜你喜欢
    • 2014-10-16
    • 2012-04-03
    • 2016-07-14
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多