简体   繁体   中英

Bundling CSS and Scripts in Web Forms application

I am here on a pickle about bundling my CSS and Scripts to my Web Forms application.

First of all, I'd like to point out that I was following this tutorial: http://blogs.msdn.com/b/rickandy/archive/2012/08/14/adding-bundling-and-minification-to-web-forms.aspx

I have already in the App_Start the class BundleConfig that looks like this:

using System.Web;
using System.Web.Optimization;

namespace SitePessoal.Web
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery/core/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                        "~/Scripts/jquery/core/jquery-ui-{version}.js"));

            bundles.Add(new StyleBundle("~/CSS/css").Include(
                        "~/CSS/Estilos.css", 
                        "~/CSS/Print.css", 
                        "~/CSS/Styles.css"));
        }
    }
}

Also, I have downloaded the Optimization package with Nugget, so afterwards I went to my Global.asax file and tried to register this in the Application_Start method like this:

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup  
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    BundleTable.EnableOptimizations = true;
}

Unfortunately, this is where things do not work. Unfortunately, it keeps underlining the class with red and giving me the following messages:

Error   3   The name 'BundleTable' does not exist in the current context
Error   4   The name 'BundleTable' does not exist in the current context
Error   2   The name 'BundleConfig' does not exist in the current context 

Any ideas as to why this may be happening? Thanks in advance!

Best regards,
Mad

I solved the problem @MadGatsu encountered following the same tutorial.

@Pricey is correct, and %MadGatsu correctly adds references to the Global.asax , including,

<%@ Import Namespace="System.Web.Optimization" %>
<script RunAt="server">        
    void Application_Start(object sender, EventArgs e)
    {
          BundleConfig.RegisterBundles(BundleTable.Bundles);

But there is a little more to it.

I deduce, based on the lack of Global.asax.cs , that we have Websites . In this case, we need to put our Bundleconfig.cs file in the special aspnet folder, App_Code . Do not add a App_Start folder to contain the file because it will not work. Simply moving my BundleConfig.cs to App_Code from App_Start corrected the 'BundleConfig' does not exist in the current context error.

You probably fixed this already but just in case it's of use to anyone.. you probably need to add a reference to System.Web.Optimization and your BundleConfig class namespace SitePessoal.Web to your Global.asax.cs

Example:

using System.Web.Optimization;
using SitePessoal.Web;

namespace SitePessoal.Web.Application
{
    public class Global : HttpApplication
    {
        private void Application_Start(object sender, EventArgs e)
        {
              BundleConfig.RegisterBundles(BundleTable.Bundles);
              BundleTable.EnableOptimizations = true;
        }
    }
}

You probably also need to add the System.Web.Optimization namespace to your pages in your web.config if you haven't done it already, because it is not enough just to add the reference to the Microsoft.AspNet.Web.Optimization package via NuGet .

<pages>
    <namespaces>
        <add namespace="System.Web.Optimization"/>
    </namespaces>
</pages>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM