【发布时间】:2014-01-24 02:35:03
【问题描述】:
使用 MVC4,我为 css 文件创建了一个控制器,以便我可以将模型传递给它们并在 css 中使用 razor 语法。
为了不破坏现有的 css 文件,这些特殊 css 文件在请求它们的路径中不存在。
我尝试将这些文件包含在一个包中,但它们没有出现在页面输出中。
bundles.Add(New StyleBundle("~/Content/site/css").Include("~/Styles/site.css"))
请注意 ~/Styles/site.css 在磁盘上不存在。但是,StylesController 会正确处理此问题,并在您要求时返回预期的内容。
我的猜测是捆绑器发现磁盘上没有文件并从输出中排除该路径。但我不知道如何让它不在乎。
关于如何让这些文件与捆绑包一起玩有什么想法吗?
【问题讨论】:
-
你的虚拟资源是通过VirtualPathProvider实现的吗?
-
他们不是。它们作为视图访问。请求
/Styles/site.css将访问StylesController的Site操作。此操作将返回/Views/Styles/site.css.vbhtml视图。 -
在这种情况下,过期将如何工作,因为捆绑包是自动跟踪的,并且 ASP.NET 使用上次修改日期时间来创建一个哈希来标识唯一捆绑包版本,并且它具有很长的缓存。
-
我没有考虑过期。我不是捆绑专家。你有什么建议吗?
-
Bundles 的过期时间很长,如果你将资源包装在 bundle 周围并且如果你的资源发生变化,bundle 仍然会发送旧资源。如果您的资源是虚拟的,您可以使用 OutputCache 轻松缓存资源,您不需要捆绑。然而 bundle 提供了最小化并将多个文本资源组合成一个,但主要的好处仍然是缓存。
标签: asp.net-mvc-4 bundle