ASP.NET MVC 2 控制器和操作使用 UpperCamelCase。
由于某些原因,包括 SO 在内的许多大型网站在 url 中使用小写(带下划线)作为控制器和操作。例子:
https://stackoverflow.com/questions
https://stackoverflow.com/users/377920/randomguy
http://www.reddit.com/ad_inq/
http://www.wired.com/special_multimedia/mobile/
etc.
我想知道这是如何实现的。
默认路由器似乎不区分大小写,即。stackoverflow.com/questions/ask
将毫无问题地定向到 Questions-controller 的 Ask() 方法。
但是,假设我们想直接questions/add_to_favorites
访问 Questions-controller 的 AddToFavorites() 操作。
- 这是如何实现的?
- 现在是否需要使用
Html.ActionLink("add_to_favorites")
而不是Html.ActionLink("AddToFavorites")
使HTML中的链接指向questions/add_to_favorites
而不是Questions/AddToFavorites
?
编辑:类似的帖子
支持下划线的一种方法是使用 ActionName 属性:
[ActionName("add_to_favorites")]
public ActionResult AddToFavorites() {
// ...
}
但是,这不适用于控制器。也许如果我们可以在请求到达路由机制之前以某种方式从请求中删除所有下划线,那么它会起作用。