我想捆绑我的所有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。
如何解决此问题?
答案 0 :(得分:4)
我相信这是因为您正在尝试捆绑min文件。这些文件将被MVC4捆绑器忽略。
解决此问题的方法是重命名.min文件。或者创建自己的忽略模式(参见链接)。
https://stackoverflow.com/a/12005272/1593273
您还可以升级到已修复的1.1-alpha1版本。
答案 1 :(得分: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"));
并确保上面的bundle在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
}