带有控制器路由源的CSS捆绑包

时间:2014-09-13 04:19:09

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

我创建了一个控制器路径来返回一个有效的css文件,然后返回Response.ContentType = "text/css"

现在我正在尝试将该URL放在我的捆绑文件中,如下所示:

bundles.Add(new StyleBundle("~/Content/custom").Include(
  "~/CSS/Custom/1"
));

注意:/CSS/Custom/1是返回text / css文件的路由。

在我看来,我有:

@Styles.Render("~/Content/custom")

当我构建项目时,bundler会在我的HTML中返回:

<link href="/Content/custom?v=" rel="stylesheet"/>

当我查看文件来源时,它是空的。

如何让它发挥作用?

2 个答案:

答案 0 :(得分:2)

不确定你为什么要这样做

在反射器中查看它之后,在捆绑过程中,它将采用项目的虚拟路径并检查以确保文件存在。 (以下代码)因此,没有CDN的捆绑绝对需要文件,而不是应用程序路径。

if ((this.VirtualPathProvider == null) || this.VirtualPathProvider.FileExists(virtualPath))
{
    base.Add(new BundleItem(virtualPath, transforms));
} 

CDN从未达到这条路线,他们采取了不同的路径。

bundles.UseCdn = true;

bundles.Add(new StyleBundle("~/Content/custom", "/CSS/Custom/1"));

BundleTable.EnableOptimizations = true;

答案 1 :(得分:0)

开箱即用,您只能捆绑物理文件。如果由于某种原因需要动态生成CSS,可以考虑创建自定义捆绑包。但如果是我,我会把它作为一个单独的下载。