在MVC中创建捆绑包的虚拟路径?

时间:2014-11-20 11:55:33

标签: c# asp.net-mvc bundling-and-minification

我在mvc应用程序中为脚本和样式创建了包。

  

bundles.Add(新   ScriptBundle("〜/束/的jquery&#34)。包含("〜/脚本/ jquery的-1 *&#34));

     

bundles.Add(新   StyleBundle("〜/内容/ CSS&#34)。包含("〜/内容/ CSS / abc.css&#34));

在这种情况下,因为存在真实的目录~/Content/CSS,所以存在名称冲突问题,因此它找不到css并且无法应用样式。所以我将虚拟路径更改为~/Content/styles/css并且它有效。 所以我在这里有点困惑,虚拟路径如何在这里工作?

1 个答案:

答案 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。