未找到MVC Bundle虚拟路径

时间:2014-11-11 17:58:58

标签: c# asp.net-mvc asp.net-mvc-5 bundle

我已经看到很多关于此的问题和答案;但是这些答案似乎都没有给我一个方向。

当我将虚拟路径指定为物理文件的地址时,以下代码正常工作:

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()构造函数的虚拟路径设置为物理文件位置吗?

1 个答案:

答案 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")