我的问题与此类似:
除非我愿意,否则我会坚持使用MVC的捆绑软件。我脑部崩溃,试图弄清楚指定样式束(例如独立的CSS和jQuery UI等图像集)的正确模式是什么。
我有一个典型的MVC站点结构,/Content/css/
其中包含我的基本CSS,例如styles.css
。在该css文件夹中,我还有子文件夹,例如/jquery-ui
包含其CSS文件和一个/images
文件夹的子文件夹。jQuery UI CSS中的图像路径是相对于该文件夹的,我不想弄乱它们。
据我了解,当我指定a时,StyleBundle
我需要指定一个虚拟路径,该路径也与真实内容路径不匹配,因为(假设我忽略了通往Content的路由)IIS将尝试将该路径解析为物理文件。所以我指定:
bundles.Add(new StyleBundle("~/Content/styles/jquery-ui")
.Include("~/Content/css/jquery-ui/*.css"));
使用以下方式呈现:
@Styles.Render("~/Content/styles/jquery-ui")
我可以看到请求发送到:
http://localhost/MySite/Content/styles/jquery-ui?v=nL_6HPFtzoqrts9nwrtjq0VQFYnhMjY5EopXsK8cxmg1
这将返回正确的,缩小的CSS响应。但是随后浏览器发送一个请求,要求一个相对链接的图像,如下所示:
http://localhost/MySite/Content/styles/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
这是一个404
。
我知道我URL的最后一部分jquery-ui
是无扩展名URL,这是我的包的处理程序,因此我可以看到为什么对图像的相对请求很简单/styles/images/
。
所以我的问题是处理这种情况的正确方法是什么?
CssRewriteUrlTransform
解决了我的问题。如果使用后您的代码仍不加载图像
CssRewriteUrlTransform
,则将css文件名更改为:至:
某种程度上,。(点)无法在url中识别。