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

本文关键字:虚拟 路径 MVC 创建 | 更新日期: 2023-09-27 18:31:24

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

束。添加(新 ScriptBundle("~/bundles/jquery").include("~/Scripts/jquery-1.*"));

束。添加(新 StyleBundle("~/Content/css").include("~/Content/CSS/abc.css"));

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

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

使用虚拟路径"~/Content/CSS/someName"会更好,因为"someName"css将具有与真正的abc.css相同的路径。换句话说,捆绑包的虚拟路径不仅是路径和文件名(在我的示例中文件名是"someName")

然后在浏览器中将 web.config 编译调试设置为 false,您将看到您的捆绑包虚拟路径。对于浏览器,它是css或js文件的url。

为什么为真正的 css 和捆绑使用相同的路径更好?因为css中资源的相对路径(img,字体等)。

示例:你有样式背景图像: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。