标题几乎说明了一切。 在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}*/;
}
这在dev中运行良好,但一旦部署,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"
));
如何正确解析这些网址?
答案 0 :(得分:20)
Ufuk的回答让我思考。将应用程序名称附加到软件包虚拟路径的前面会破坏我的所有样式。
bundle函数获取include语句中的所有CSS文件,并将它们缩小为位于bundle的虚拟路径中指定的URL的一个文件。此捆绑包中包含的CSS文件中指定的URL使用捆绑包的给定虚拟路径在运行时构建其URL。这在dev中工作正常,因为dev不使用bundle,它单独/直接引用每个css文件。
解决方案是使用正确的虚拟路径创建一个包:
bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
"~/Content/themes/base/jquery-ui.css")):
感谢Ufuk的建议和指导。
答案 1 :(得分:3)
您应该像这样更新软件包的虚拟路径:
bundles.Add(new StyleBundle("~/appName/Content/css").Include(
"~/Content/themes/base/jquery-ui.css",
"~/Content/site.css"
));
这样,CSS文件中的相对网址将从~/appName
开始。如果您在site.css文件中有其他相对URL,请记住这一点。
答案 2 :(得分:0)
在我使用nuGet包管理器将我的解决方案更新到最新的jqueryui -files版本1.11之后,jqueryui的css文件没有加载。所以我检查了BundleConfig类只是为了注意到jqueryui css仍在使用旧路径,如:
"〜/内容/主题/碱/ jquery.ui.theme.css"
我用以下内容替换了:
"〜/内容/主题/碱/ theme.css"
然后我的页面重新开始营业。