我正在使用ASP.NET MVC4 ......开箱即用_Layout.cshtml已经
@Scripts.Render("~/bundles/jquery")
在里面。我还有一个有一个
的股票BundleConfig.csbundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
在里面。我的Index.cshtml中有一个这样的脚本块,这只是一个普通的视图。
<script src="@Url.Content("~/Scripts/ProductsIndex.js")" type="text/javascript"></script>
但是该脚本中的JQuery没有运行......但是,如果我将以下行放在我的Index.cshtml中(紧邻ProductsIndex.js脚本引用),那么JQuery运行正常。
<script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"> </script>
我知道这很简单,但鉴于_Layout.cshtml已经引用了JQuery库,我不应该使用JQuery而不必再次将它添加到我的Index.cshtml中吗?
答案 0 :(得分:1)
解决这个问题的原因是将@Layout.cshtml底部的@ Scripts.Render(“〜/ bundles / jquery”)语句移到了顶部。默认情况下,Microsoft将此render语句放在页脚下方。我将它与@ Scripts.Render(“〜/ bundles / modernizr”)一起移动到了该部分,然后我的index.cshtml中的脚本开始工作。
显然,问题是当我的index.cshtml中的脚本试图执行时,JQuery尚未加载,因为它位于页面的底部。
答案 1 :(得分:0)
您可以简单地将实际文件名放在bundle config中以进行查询,并删除标记化版本:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-1.8.2.min.js"));
如果您没有在发布模式下构建应用程序(或者在web.config中有<compilation debug="true" />
),那么现有的bundle配置可能找不到你的缩小(.min.js)版本的jQuery。 / p>
了解捆绑功能以及它如何根据构建配置here在脚本的未缩小版本和缩小版本之间自动切换。