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

Swi*_*fty 12 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}*/;
}
Run Code Online (Sandbox Code Playgroud)

这在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"
));
Run Code Online (Sandbox Code Playgroud)

如何正确解析这些网址?

Swi*_*fty 21

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")):
Run Code Online (Sandbox Code Playgroud)

感谢Ufuk的建议和指导.

  • 只是注意到样式包虚拟路径应该与实际位置不同...这让我卡住了几分钟. (3认同)