locked
RegisterTemplateBundles vs EnableDefaultBundles RRS feed

  • 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
  • User401360897 posted

    So the bundle will include both? or just one?  how does it know?

    From here,

    By default bundling will take only the .min version and not use the non-min, the vsdoc and debug versions.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Friday, March 9, 2012 9:30 PM

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
  • User401360897 posted

    So the bundle will include both? or just one?  how does it know?

    From here,

    By default bundling will take only the .min version and not use the non-min, the vsdoc and debug versions.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Friday, March 9, 2012 9:30 PM