Content文件夹对MVC的底层框架是否特殊?我在路由代码或配置中找不到任何引用。
我只是想知道静态内容是否可以用不同的方式处理。
在相关的说明中,stackoverflow的脚本和css内容似乎是通过查询字符串中的版本号检索的:
<link href="/Content/all.min.css?v=2516" rel="stylesheet" type="text/css" />
注意推测这可能如何起作用以及为什么这很重要?
答案 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,它可以是在服务器上执行的自定义处理程序,以按版本检索压缩样式表。