在Web窗体应用程序中捆绑CSS和脚本

本文关键字:CSS 脚本 Web 窗体 应用程序 | 更新日期: 2023-09-27 18:13:57

我在这里遇到了一个关于将CSS和脚本绑定到Web窗体应用程序的难题。

首先,我想指出的是,我正在遵循本教程:http://blogs.msdn.com/b/rickandy/archive/2012/08/14/adding-bundling-and-minification-to-web-forms.aspx

我已经在App_Start中有BundleConfig类,它看起来像这样:

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"));
        }
    }
}

此外,我已经下载了Nugget的优化包,所以后来我转到我的Global.asax文件,并试图在Application_Start方法中注册它,如下所示:

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

不幸的是,这是不起作用的地方。不幸的是,它一直用红色在类下划线,并给我以下信息:

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 

关于为什么会发生这种情况,有什么想法吗?提前感谢!

谨致问候,
Mad

在Web窗体应用程序中捆绑CSS和脚本

我按照相同的教程解决了@MadGatsu遇到的问题。

@价格是正确的,%MadGatsu正确地添加了对Global.asax的引用,包括

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

但它还有更多。

基于缺少Global.asax.cs,我推断我们有网站。在这种情况下,我们需要将Bundleconfig.cs文件放在特殊的aspnet文件夹App_Code中。不要添加App_Start文件夹来包含该文件,因为它不起作用。简单地将我的BundleConfig.csApp_Start移动到App_Code纠正了当前上下文中不存在"BundleConfig"错误。

您可能已经修复了这个问题,但只是为了以防万一它对任何人都有用。。您可能需要在Global.asax.cs 中添加对System.Web.OptimizationBundleConfig类命名空间SitePessoal.Web的引用

示例:

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;
        }
    }
}

如果您还没有在web.config中的页面中添加System.Web.Optimization命名空间,那么您可能还需要添加它,因为仅仅通过NuGet添加对Microsoft.AspNet.Web.Optimization包的引用是不够的。

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