我在mvc应用程序中为脚本和样式创建了包。
bundles.Add(新 ScriptBundle("〜/束/的jquery&#34)。包含("〜/脚本/ jquery的-1 *&#34));
bundles.Add(新 StyleBundle("〜/内容/ CSS&#34)。包含("〜/内容/ CSS / abc.css&#34));
在这种情况下,因为存在真实的目录~/Content/CSS
,所以存在名称冲突问题,因此它找不到css并且无法应用样式。所以我将虚拟路径更改为~/Content/styles/css
并且它有效。
所以我在这里有点困惑,虚拟路径如何在这里工作?
答案 0 :(得分:1)
使用该虚拟路径“〜/ Content / CSS / someName”会更好,因为“someName”css将具有与real abc.css相同的路径。 换句话说,bundle的虚拟路径不仅是路径是路径而且是fileName(在我的示例文件名中是“someName”)
然后在浏览器中将web.config compilationDebug设置为false,您将看到捆绑虚拟路径。对于浏览器,它是css或js文件的URL。
为什么最好为真正的css和捆绑提供相同的路径?因为css中资源的相对路径(img,fonts等)。
示例:您有样式background-image:url(images / 1.jpg);在Content / CSS / abc.css中,使用虚拟路径〜/ Content / styles / css作为捆绑包。结果你得到404图像因为浏览器将通过url请求图像:/Content/styles/images/1.jpg而不是/Content/css/images/1.jpg
如果在同一个包中包含不同路径的css,请使用CssRewriteUrlTransformation。
是的,你的示例中有名称冲突,因为结果中的虚拟css具有与真实文件夹相同的URL。