我有这个:
bundles.Add(new StyleBundle("~/Content/Styles/Default").Include("~/Content/Styles/Default/Site.css"));
在我的网站上,我有这个:
@section Styles
{
@Styles.Render("~/Content/Styles/Default"))
}
我的_Layout.cshtml看起来像这样:
@RenderSection("Styles", true)
一切都很好看,是吗?好吧,不是真的。当我在发布模式下编译我的应用程序时,决定发布它,这就是它呈现的内容:
<link href="/Content/Styles/Default?v=78dkNySP_xsiuzsgxCx_GGnnHzYS-B8nNdnXqcl47XI1" rel="stylesheet">
它不会生成对文件的href,而是生成某种id? GUID?为什么? O.o
答案 0 :(得分:3)
这是捆绑包的工作方式。它的主要目的是将多个CSS(以及相关的JS文件)文件合并到一个包中。例如你不再需要将所有的css(和js)放入一个巨大的文件中。只需将其拆分为多个部分,然后将其添加到捆绑包中,然后将其打包成一个项目。网页请求越少,页面加载时间就越快。
e.g。假设您有2个css文件。一个是主要的,但你有一个菜单系统。
bundles.Add(new StyleBundle("~/Content/Styles/Default").Include(
"~/Content/Styles/Default/Site.css",
"~/Content/Styles/Default/Menu.css"));
这将显示为URL上的GUID类型代码(以防止文件更改缓存)的单个调用。此URL将链接到缩小和捆绑的CSS。
但我的浏览器无法读取!文件没有物理路径!
这是一种虚拟文件。 MVC的捆绑使用路由引擎将其指向粒子束的组合和缩小版本。