【问题标题】:BundleTable.EnableOptimizations true breaks jquery-ui all.cssBundleTable.EnableOptimizations true 打破 jquery-ui all.css
【发布时间】:2015-02-18 14:25:36
【问题描述】:

在 Asp.Net MVC 5 应用程序中,我在 egisterBundles 方法中创建样式包。
我正在使用 jquery-ui
而不是列出所有 jquery-ui css 文件我单独使用all.css,它会导入所有其余部分。
代码如下所示:

bundles.Add(new StyleBundle("~/Content/css").Include(
                  "~/Content/a.css",
                  "~/Content/b.css",
                  "~/Content/themes/base/all.css"));

而 all.css 包含两行:

@import "base.css";
@import "theme.css";

这有效,但只有当我设置时

BundleTable.EnableOptimizations = false.

当我设置时

BundleTable.EnableOptimizations = true

然后没有 jquery css 加载。

当然有一个简单的解决方法;我可以单独将 jquery-ui css 文件添加到包中。
但我很好奇:当 css 文件被捆绑和缩小时,为什么 all.css 会中断?
这似乎不是特定于浏览器的,因为我在两个 IE9 中都有同样的问题em> 和 Chrome 39

【问题讨论】:

    标签: css jquery-ui asp.net-mvc-5


    【解决方案1】:

    根据这个答案,默认的 minifier 根本不支持 @import 指令:

    MVC4 bundling CSS failed Unexpected token, found '@import'

    另外,jquery-ui css 文件包含图片的相对路径,所以 bundle 的虚拟路径必须允许浏览器找到图片的相对路径,例如:

    bundles.Add(new StyleBundle("~/Content/themes/base/jqueryui")
       .Include("~/Content/themes/base/core.css" [and other desired css files]));
    

    在cshtml页面上:

    @Styles.Render("~/Content/themes/base/jqueryui")
    

    请参阅此链接以了解说明:MVC4 StyleBundle not resolving images

    【讨论】:

    • 有趣。我想这是有道理的。鉴于捆绑程序的主要目的是将所有列出的文件合并到一个文件中,支持@include 的意义不大。
    • 是的,我遇到了同样的问题,我的解决方案是获取所有 @import'd jQueryUI 文件的列表,并将它们中的每一个添加到 bundles.Add() 语句中。 stackoverflow.com/a/45083177/391605
    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多