12

标题基本概括了所有内容。在 jquery-ui.css 中,它定义了如下样式:

ui-widget-content {
border: 1px solid #aaaaaa/*{borderColorContent}*/;
background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*
color: #222222/*{fcContent}*/;
}

这在开发中运行良好,但一旦部署,url 不再解析。该站点部署在 IIS7 中的默认网站下。所以在浏览器控制台中我可以看到它正在寻找图像

http:// (servername)/(appName)/Content/images/ui-bg_glass_75_e6e6e6_1x400.png
代替
http:// (serverName)/(appName)/content/themes/base/images...

这是捆绑配置:

bundles.Add(new StyleBundle("~/Content/css").Include(
            "~/Content/themes/base/jquery-ui.css",
            "~/Content/site.css"
));

如何使这些 URL 正确解析?

4

3 回答 3

21

Ufuk的回答让我思考。将应用程序名称附加到包的虚拟路径的前面打破了我所有的风格。

bundle 函数获取 include 语句中的所有 CSS 文件,并将它们压缩到一个文件中,该文件位于 bundle 的虚拟路径中指定的 URL 处。此捆绑包中包含的 CSS 文件中指定的 url 使用捆绑包的给定虚拟路径在运行时构建其 URL。这在 dev 中运行良好,因为 dev 不使用捆绑包,它单独/直接引用每个 css 文件。

解决方案是使用正确的虚拟路径创建一个包:

bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                    "~/Content/themes/base/jquery-ui.css")):

感谢 Ufuk 的建议和指导。

于 2013-08-12T12:26:54.207 回答
3

您应该像这样更新捆绑包的虚拟路径:

bundles.Add(new StyleBundle("~/appName/Content/css").Include(
            "~/Content/themes/base/jquery-ui.css",
            "~/Content/site.css"
));

这样,您的 CSS 文件中的相对 URL 将从~/appName. 如果您在 site.css 文件中有其他相对 URL,请记住这一点。

于 2013-08-12T10:57:57.847 回答
0

在我使用 nuGet 包管理器将我的解决方案更新到最新的 jqueryui -files 1.11 版后,jqueryui 的 css 文件没有被加载。所以我检查了 BundleConfig 类,只是为了注意到 jqueryui css 仍在使用旧路径,例如:
“~/Content/themes/base/jquery.ui.theme.css”
我将它们替换为:
“~/Content/themes/base/ theme.css”
,然后我的页面又恢复了营业。

于 2015-06-11T07:05:23.867 回答