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

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

bundles.Add(新的ScriptBundle(“〜/ bundles / jquery”).include(“〜/ Scripts / jquery-1。*”));

bundle(新的StyleBundle(“〜/ Content / css”).include(“〜/ Content / CSS / abc.css”));

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


这会更好地使用虚拟路径“〜/ Content / CSS / someName”,因为“someName”css将具有与真实abc.css相同的路径。 换句话说,bundle的虚拟路径不仅是一个路径,而且是一个路径和fileName(在我的例子中文件名是“someName”)

然后你在浏览器中将web.config compilationDebug设置为false,你会看到你的bundle虚拟路径。 对于浏览器,它是URL到JS或JS文件。

为什么最好有相同的路径为真正的CSS和捆绑? 由于在CSS(img,字体等)中资源的相对路径。

例如:你有风格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具有与真实文件夹相同的网址。

链接地址: http://www.djcxy.com/p/67981.html

上一篇: Virtual paths in creating bundles in MVC?

下一篇: Custom bundle in MVC 4 is not rendered