2

I'm using ASP.NET Web Forms with master pages. There are so many moving parts to this that I cannot figure it out. Different tutorials use different parts of it and omit others, that I cannot determine what is needed and what is fluff.

Different Parts:

Master Pages: In the head section for my CSS I have:

<link href="Content/css" rel="stylesheet" />

<asp:PlaceHolder runat="server">     
    <%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>

Before closing body tag, I have:

<script src="<%= ResolveUrl("~") %>Scripts/jquery-2.1.1.js"></script>
<script src="<%= ResolveUrl("~") %>Scripts/bootstrap.min.js"></script>
<script src="<%= ResolveUrl("~") %>Scripts/jquery.reject.js"></script>
<script src="<%= ResolveUrl("~") %>Scripts/general.js"></script>

Looks like the min one is not needed, but do I need any of these and instead use

<script src="Scripts/js"></script> ?

Global.asax.cs: this seems simple enough, registering the bundles in Application_Start method.

void Application_Start(object sender, EventArgs e)
{
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

Web.config:

I added the System.Web.Optimization namespace and the Microsoft.AspNet.Web.Optimization.WebForms assembly.

Bundle.config: I have no idea what this is for; many tutorials don't even mention it?

BundleConfig.cs: As well as the standard WebFormsJs, MsAjaxJs and modernizr custom bundles, I have the following for CSS:

bundles.Add(new StyleBundle("~/bundles/css").Include(
    "~/Content*"));

This is not working. I was about to add something similar for my JS files but got confused as to why I am doing this at all when according to this tutorial, all I needed for the CSS was:

<link href="Content/css" rel="stylesheet" />

Presumably, all I needed for my JS files was:

<script src="Scripts/js"></script>

In some tutorials I have seen ScriptManager.ScriptResourceMapping.AddDefinition - what is this for?

Here is the current state of my CSS and Scripts folders - I need all the non-minifed versions of these:

https://i.stack.imgur.com/x11s7.jpg

https://i.stack.imgur.com/iirg7.jpg

Can someone help me piece this together? I am running locally with debug set to false.

IrishChieftain
  • 15,108
  • 7
  • 50
  • 91

1 Answers1

3

Below is a list of each of the sections that need to be configured for Bundling and Minification in WebForms.

This is taken from a production code base which is running Bundling and Minification.

Libraries:

  • Microsoft.AspNet.Web.Optimization

Dependencies:

  • WebGrease
  • Microsoft.Web.Infrastructure (depending on version)

Global.asax

void Application_Start(object sender, EventArgs e)
{
    BundleConfig.RegisterBundles(BundleTable.Bundles);

    //Use this if you want to force/test bundling in debug.
    BundleTable.EnableOptimizations = true;
}

BundleConfig class

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/sitejs")
            //Add as many JS libraries you would like to the bundle...
            .Include("~/Scripts/jquery-3.1.1.js")
            .Include("~/Scripts/jquery-migrate-3.0.0.js")
            );

        bundles.Add(new StyleBundle("~/bundles/sitecss")                
            //Add as many CSS files that you would like to the bundle...
            .Include("~/css/jquery-ui.css")
            );
    }
}

Master Page:

<!-- At the top of the Master Page -->
<%@ Import Namespace="System.Web.Optimization" %>

<!-- Just after the closing `</form>` tag -->

<asp:PlaceHolder runat="server">
    <%: Styles.Render("~/bundles/sitecss") %
    <%: Scripts.Render("~/bundles/sitejs") %
</asp:PlaceHolder>
Seany84
  • 5,526
  • 5
  • 42
  • 67
  • Thanks so much for a great answer. I got more details on the purpose of the Bundle.config file here: http://stackoverflow.com/questions/13726956/bundling-resources-via-bundle-config-vs-bundleconfig-cs-in-asp-net-4-5-webforms – IrishChieftain Apr 23 '17 at 03:20
  • One side question: if everything works, and it does, per your explanation... do I actually need this? – IrishChieftain May 03 '17 at 18:54
  • 1
    @IrishChieftain I'm not familiar with that tag but you could probably remove it as you have the CSS already covered. – Seany84 May 03 '17 at 21:11