Answered by:
RegisterTemplateBundles vs EnableDefaultBundles

Question
-
User1250738414 posted
Using the ASP.NET MVC 4 Beta what are the differences between these two methods in the global.ascx file?
I found that in the default File > New Project the RegisterTemplateBundles does not bundle custom sub directories
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); BundleTable.Bundles.RegisterTemplateBundles(); }
e.g content > themes > test > style.css
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/themes/test/css")" rel="stylesheet" type="text/css" />
This will result in a HTML markup without the href attribute
<link rel="stylesheet" type="text/css" />
However if i comment out the default and replace with
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); BundleTable.Bundles.EnableDefaultBundles(); //BundleTable.Bundles.RegisterTemplateBundles(); }
With the above code i can see the correct markup with the bundled css
Tuesday, February 21, 2012 2:49 AM
Answers
-
User401360897 posted
The main difference(IMHO) is that RegisterTemplateBundles uses the project default script/css folder and paths for bundling js/css. On the other hand EnableDefaultBundles can be used for dynamic css/js folder and paths. Here is the quick source demo,
public void RegisterTemplateBundles() { Bundle bundle = new Bundle("~/Scripts/js", new JsMinify()); bool searchSubdirectories = false; bool throwIfNotExist = false; bundle.AddDirectory("~/Scripts", "jquery-*", searchSubdirectories, throwIfNotExist); bool flag3 = false; bool flag4 = false; bundle.AddDirectory("~/Scripts", "jquery.mobile*", flag3, flag4); bool flag5 = false; bool flag6 = false; bundle.AddDirectory("~/Scripts", "jquery-ui*", flag5, flag6); bool flag7 = false; bool flag8 = false; bundle.AddDirectory("~/Scripts", "jquery.unobtrusive*", flag7, flag8); bool flag9 = false; bool flag10 = false; bundle.AddDirectory("~/Scripts", "jquery.validate*", flag9, flag10); bool flag11 = false; bundle.AddFile("~/Scripts/MicrosoftAjax.js", flag11); bool flag12 = false; bundle.AddFile("~/Scripts/MicrosoftMvc.js", flag12); bool flag13 = false; bool flag14 = false; bundle.AddDirectory("~/Scripts", "modernizr*", flag13, flag14); bool flag15 = false; bundle.AddFile("~/Scripts/AjaxLogin.js", flag15); this.Add(bundle); Bundle bundle2 = new Bundle("~/Content/css", new CssMinify()); bool flag16 = false; bundle2.AddFile("~/Content/site.css", flag16); bool flag17 = false; bool flag18 = false; bundle2.AddDirectory("~/Content/", "jquery.mobile*", flag17, flag18); this.Add(bundle2); Bundle bundle3 = new Bundle("~/Content/themes/base/css", new CssMinify()); bool flag19 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.core.css", flag19); bool flag20 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.resizable.css", flag20); bool flag21 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.selectable.css", flag21); bool flag22 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.accordion.css", flag22); bool flag23 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.autocomplete.css", flag23); bool flag24 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.button.css", flag24); bool flag25 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.dialog.css", flag25); bool flag26 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.slider.css", flag26); bool flag27 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.tabs.css", flag27); bool flag28 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.datepicker.css", flag28); bool flag29 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.progressbar.css", flag29); bool flag30 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.theme.css", flag30); this.Add(bundle3); } public void EnableDefaultBundles() { this.Add(new DynamicFolderBundle("js", JsMinify.Instance, "*.js")); this.Add(new DynamicFolderBundle("css", CssMinify.Instance, "*.css")); }
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Sunday, February 26, 2012 10:07 AM -
All replies
-
User-46837822 posted
Thanks! That worked for me.
I had to add:
BundleTable.Bundles.EnableDefaultBundles();
And comment out:
BundleTable.Bundles.RegisterTemplateBundles();
Could it be a goof up in the template? Maybe it'll be resolved on release.
Tuesday, February 21, 2012 10:04 AM -
User401360897 posted
The main difference(IMHO) is that RegisterTemplateBundles uses the project default script/css folder and paths for bundling js/css. On the other hand EnableDefaultBundles can be used for dynamic css/js folder and paths. Here is the quick source demo,
public void RegisterTemplateBundles() { Bundle bundle = new Bundle("~/Scripts/js", new JsMinify()); bool searchSubdirectories = false; bool throwIfNotExist = false; bundle.AddDirectory("~/Scripts", "jquery-*", searchSubdirectories, throwIfNotExist); bool flag3 = false; bool flag4 = false; bundle.AddDirectory("~/Scripts", "jquery.mobile*", flag3, flag4); bool flag5 = false; bool flag6 = false; bundle.AddDirectory("~/Scripts", "jquery-ui*", flag5, flag6); bool flag7 = false; bool flag8 = false; bundle.AddDirectory("~/Scripts", "jquery.unobtrusive*", flag7, flag8); bool flag9 = false; bool flag10 = false; bundle.AddDirectory("~/Scripts", "jquery.validate*", flag9, flag10); bool flag11 = false; bundle.AddFile("~/Scripts/MicrosoftAjax.js", flag11); bool flag12 = false; bundle.AddFile("~/Scripts/MicrosoftMvc.js", flag12); bool flag13 = false; bool flag14 = false; bundle.AddDirectory("~/Scripts", "modernizr*", flag13, flag14); bool flag15 = false; bundle.AddFile("~/Scripts/AjaxLogin.js", flag15); this.Add(bundle); Bundle bundle2 = new Bundle("~/Content/css", new CssMinify()); bool flag16 = false; bundle2.AddFile("~/Content/site.css", flag16); bool flag17 = false; bool flag18 = false; bundle2.AddDirectory("~/Content/", "jquery.mobile*", flag17, flag18); this.Add(bundle2); Bundle bundle3 = new Bundle("~/Content/themes/base/css", new CssMinify()); bool flag19 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.core.css", flag19); bool flag20 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.resizable.css", flag20); bool flag21 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.selectable.css", flag21); bool flag22 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.accordion.css", flag22); bool flag23 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.autocomplete.css", flag23); bool flag24 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.button.css", flag24); bool flag25 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.dialog.css", flag25); bool flag26 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.slider.css", flag26); bool flag27 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.tabs.css", flag27); bool flag28 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.datepicker.css", flag28); bool flag29 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.progressbar.css", flag29); bool flag30 = false; bundle3.AddFile("~/Content/themes/base/jquery.ui.theme.css", flag30); this.Add(bundle3); } public void EnableDefaultBundles() { this.Add(new DynamicFolderBundle("js", JsMinify.Instance, "*.js")); this.Add(new DynamicFolderBundle("css", CssMinify.Instance, "*.css")); }
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Sunday, February 26, 2012 10:07 AM -
User-1422375940 posted
Just a question since I am new to MVC 4.
The script folder includes both the regualr version and min version, for example,
jquery-ui-1.8.11.js
jquery-ui-1.8.11.min.js
So the bundle will include both? or just one? how does it know?
Thanks,
Friday, March 9, 2012 2:50 PM -