ASP.NET MVC - 在发布模式下生成奇怪的样式

时间:2013-02-17 20:18:47

标签: asp.net asp.net-mvc

我有这个:

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

1 个答案:

答案 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的捆绑使用路由引擎将其指向粒子束的组合和缩小版本。