jquery不包括在捆绑中

时间:2012-04-19 09:49:13

标签: jquery asp.net-mvc asp.net-mvc-4

我对我在项目中使用jquery的一个小问题很困惑。该项目是visual studio 11中的MVC4站点。

问题是jQuery没有包含在捆绑中,并且它似乎在我更新到1.7.2之前工作,但不能确定。

我可以在捆绑文件的顶部看到jQuery文件的注释,但无法找到它的任何代码。所有其他文件似乎都包含在内(我自己的脚本和jquery ui文件)。

我尝试过捆绑过滤器并创建自己的捆绑包,但似乎没有任何效果。

我真的很感激任何帮助,因为当页面加载时,所有java脚本都因为找不到函数而崩溃。如果我只是正常包含java脚本文件,这确实有效。

修改

的Global.asax:

protected void Application_Start()
{
    BundleTable.Bundles.EnableDefaultBundles();
}

_Layout.cshtml:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>

更新1:

我在jQuery文件中添加了一些代码,捆绑的文件包含在顶部。

function Test(){ }

然后改为这个,这次代码不存在。

(function Test(){  })

奇怪的是,其他jQuery文件(如UI文件)不会被删除,并且它们的方式相同。

编辑:似乎这是打算

更新2:

测试了一些并发现了哪个文件中断了,如果我在自定义包中包含任何这些文件,它会中断

  • jquery.validate.js
  • jquery.validate.unobtrusive.js
  • jquery.unobtrusive-ajax.min.js

在他们之前我有这些,他们没有任何错误地工作

  • 的jquery-1.7.2.min.js
  • 的jquery-UI-1.8.19.min.js
  • bootstrap.min.js

如果我在脚本<script src="~/Scripts/jquery.validate.js"></script>中正常包含这些文件,那么它仍然很奇怪,它们可以正常工作,没有错误。

但是,如果我捆绑工作文件,然后正常添加非工作文件,它们仍会中断

_Layout.cshtml:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/myBundle")"></script>
<script src="~/Scripts/jquery.validate.js"></script>

的Global.asax:

var bundle = new Bundle("~/js", new JsMinify());
bundle.AddFile("~/Scripts/jquery-1.7.2.min.js");
bundle.AddFile("~/Scripts/jquery-ui-1.8.19.min.js");
bundle.AddFile("~/Scripts/bootstrap.min.js");
BundleTable.Bundles.Add(bundle);

编辑:似乎在捆绑的jquery文件中发生了某些变化,这会使验证插件中断

解决方法

我尝试在更新之前添加旧文件,并且它可以正常工作!管理,发现它是来自NuGet的新jQuery UI 1.8.19崩溃。

我直接从他们的网站下载了jquery ui,并使用了那个,并且它有效!

所以似乎jquery ui nuget版本中的某些内容被更改,捆绑正在拾取并更改/删除它,因此它会中断..

哪部分责备? jQuery UI NuGet包还是mvc4捆绑?是否有捆绑问题的解决方案?

2 个答案:

答案 0 :(得分:3)

解决方法

我尝试在更新之前添加旧文件,并且它可以正常工作!管理,发现它是来自NuGet的新jQuery UI 1.8.19崩溃。

我直接从他们的网站下载了jquery ui,并使用了那个,并且它有效!

所以似乎jquery ui nuget版本中的某些内容被更改,捆绑正在拾取并更改/删除它,因此它会中断..

哪部分责备? jQuery UI NuGet包还是mvc4捆绑?是否有捆绑问题的解决方案?

答案 1 :(得分:0)

我认为EnableDefaultBundles()试图包含特定版本的jQuery,所以如果你说你已升级它(并且可能删除旧版本),我会冒险猜测并说MVC正试图捆绑一个不再存在的文件。

您必须放弃使用EnableDefaultBundles(),或者至少编译一个额外的捆绑包并将其包括在内。

你说你已经尝试创建自己的,但你可以再试一次吗?也许以下内容会有所帮助:

Bundle myJSBundle = new Bundle("~/MyJSBundle", typeof(JsMinify));
myJSBundle.AddDirectory("~/Scripts", "*.js", false);
BundleTable.Bundles.Add(myJSBundle);

显然改变了与你自己的项目相匹配的路径。然后将其包含在页面中:

<script src="@Url.Content("~/MyJSBundle")" type="text/javascript"></script>

来源:http://www.dotnetexpertguide.com/2011/12/bundling-and-minification-aspnet-mvc4.html