0

我想捆绑我所有的 JavaScript 文件,所以它应该只访问服务器一次。但有了这个,我面临一个问题。

bundles.Add(new ScriptBundle("~/LayoutJs").Include(
                "~/Scripts/Libraries/jquery-1.8.2.min.js",
                "~/Scripts/Libraries/kendo/2013.1.319/kendo.all.min.js",
                "~/Scripts/Libraries/jquery.blockUI.js",
                "~/Scripts/Libraries/knockout/knockout-2.1.0.js",
                "~/Scripts/Libraries/knockout/knockout.mapping-latest.js",
                "~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js",
                "~/Scripts/Libraries/tabStrip.js",
                "~/Scripts/Libraries/underscore-min.js",
                "~/Scripts/Libraries/knockout/knockout-kendo.min.js",
                "~/Scripts/Common.js"
                ));

我收到未定义 jquery 的错误,但我在包的顶部包含了 jquery。

我该如何解决这个问题?

4

2 回答 2

4

我相信这是因为您正在尝试捆绑最小文件。这些文件将被 MVC4 捆绑器忽略。

解决此问题的方法是重命名文件,取出 .min。或者创建自己的忽略模式(见链接)。

https://stackoverflow.com/a/12005272/1593273

您还可以升级到已修复此问题的 1.1-alpha1 版本。

ASP.NET 网页优化

于 2013-05-09T10:58:07.980 回答
0

请首先确保您已添加如下脚本

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
 "~/Scripts/jquery-1.7.1.min.js",
 "~/Scripts/jquery.validate.min.js",
 "~/Scripts/jquery.validate.unobtrusive.min.js"));

并确保在 BundleConfig 类中定义了上述包,如下所示:

public class BundleConfig
{
 public static void RegisterBundles(BundleCollection bundles)
 {


bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
 "~/Scripts/jquery-1.7.1.min.js",
 "~/Scripts/jquery.validate.min.js",
 "~/Scripts/jquery.validate.unobtrusive.min.js"));
 }
} 

“*”通配符用于组合在同一目录下且与文件名具有相同前缀或后缀的文件。假设您要添加所有存在于“~/Script”目录中的脚本文件,并以“jquery”为前缀,那么您可以创建如下包:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery*.js"));

所有包都在您的 Web 应用程序的 Global.asax 文件的 Application_Start 事件中注册。

protected void Application_Start()
{
 BundleConfig.RegisterBundles(BundleTable.Bundles);
 // code
}
于 2013-05-09T07:24:46.977 回答