如何在MVC4视图中使用Jquery脚本

时间:2013-07-30 22:40:10

标签: jquery asp.net-mvc-4

我正在使用ASP.NET MVC4 ......开箱即用_Layout.cshtml已经

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

在里面。我还有一个有一个

的股票BundleConfig.cs
bundles.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中吗?

2 个答案:

答案 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在脚本的未缩小版本和缩小版本之间自动切换。