MVC jQuery UI CSS urls在部署后无法解析

时间:2013-08-12 10:38:52

标签: css asp.net-mvc-4

标题几乎说明了一切。 在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"
));

如何正确解析这些网址?

3 个答案:

答案 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"
然后我的页面重新开始营业。