内容文件夹是否在asp.net mvc中是神圣的?

时间:2009-02-22 19:58:50

标签: asp.net-mvc

Content文件夹对MVC的底层框架是否特殊?我在路由代码或配置中找不到任何引用。

我只是想知道静态内容是否可以用不同的方式处理。

在相关的说明中,stackoverflow的脚本和css内容似乎是通过查询字符串中的版本号检索的:

<link href="/Content/all.min.css?v=2516" rel="stylesheet" type="text/css" />

注意推测这可能如何起作用以及为什么这很重要?

5 个答案:

答案 0 :(得分:19)

没有魔法,System.Web.Routing.RouteCollection类有一个属性RouteExistingFiles来控制行为。

默认值为false,这意味着ASP路由不应该路由URL,而只是返回默认内容。在这种情况下,“/ Content / all.min.css?v = 251”完全跳​​过MVC路由规则。

如果要为内容文件夹添加路由规则,则需要添加规则,并将RouteExistingFiles设置为true。

答案 1 :(得分:5)

不,Content文件夹不是神圣的。随意使用它。

重新版本 - 如果你启用了基于http头的缓存,这是帮助版本控制的常用技巧;否则您无法保证所有客户端都使用更新的文件。你会在网上看到很多“foo_v4.js”等; -p

答案 2 :(得分:4)

我在我的一些网站上使用相同的技术。我使用它来避免缓存 - 如果你没有为不同的构建指定不同的URL,客户端可能已经缓存了旧的。

答案 3 :(得分:3)

只是添加其他评论 - 路由系统的工作方式如下:

请求进入,然后定向到路由引擎,路由引擎然后按照路由表的顺序查看匹配 - 这就是为什么你应该在更一般的路由之前放置更多特定路由的原因。 / p>

如果找不到匹配项,路由引擎会将请求传递给IIS以便正常处理 - 这也是您可以在同一个应用程序中混用ASP.NET Webforms和MVC的方法。

答案 4 :(得分:1)

它没有特别的意义。它只是一个仲裁名称。如果您使用ASP.NET MVC RC向导,您会发现它在您的母版页(Site.master)中被引用:

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

对于在SO中使用的all.min.css,它可以是在服务器上执行的自定义处理程序,以按版本检索压缩样式表。