我已经看到很多关于此的问题和答案;但是这些答案似乎都没有给我一个方向。
当我将虚拟路径指定为物理文件的地址时,以下代码正常工作:
bundles.Add(new Bundle("~/Modules/SIRVA.Connect.Intake.SAP/Content/style.css")
.Include("~/Modules/Intake/Content/Style.css"));
但是,如果我指定文件系统中不存在的虚拟路径(如此...):
bundles.Add(new Bundle("~/content/intake.css")
.Include("~/Modules/Intake/Content/Style.css"));
... MVC将呈现样式但是当你点击href时它会显示“找不到页面”,并且样式不起作用(因为它们不在那里)。
<link href="/content/intake.css" rel="stylesheet"/>
MVC自己的例子似乎指出一个不存在的物理位置作为虚拟路径,但是当它们这样做时它工作正常!
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css"
));
有人能告诉我为什么必须将Bundle()
构造函数的虚拟路径设置为物理文件位置吗?
答案 0 :(得分:3)
该路径不应该是物理文件位置。您可以尝试指定目录而不是特定的文件类型吗?像这样(使用StyleBundle因为我知道你想要创建一个css包):
bundles.Add(new StyleBundle("~/bundles/css")
.Include("~/Modules/Intake/Content/Style.css"));
这将允许应用程序在生产环境中进行版本控制时生成查询字符串(如果启用了捆绑包以最小化和压缩)。
<link rel="stylesheet" href="/bundles/css?v=f-rOZpG8nqcdBI9IS1kiTRlij7Eim7N9U1_RJYwd4_w1"></link>
我认为在捆绑包中使用文件的物理路径是有限的,因为它不允许您在那里添加更多内容,因为它已经在使用中。我还没有真正以这种方式使用它,所以我不知道确切的结果是什么。
编辑(以防万一):
您还需要在视图中正确呈现它。这是一个例子(剃刀视图):
@Styles.Render("~/bundles/css")