我正在尝试配置我的路由,这样我就可以让博客条目(带有字符串id)成为url中唯一的段。
例如,
/ABlogTitle ->控制器=“博客”,操作= "Entry",Id = "ABlogTitle“
我的假设是,如果一个路由由于操作不存在而失败,它将使用下一个路由重试,但这似乎不起作用。
这是我的路线。
routes.MapRoute(
name: "Entries",
url: "{id}",
defaults: new {controller = "Blog", action = "Entry"}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Blog", action = "Index", id = UrlParameter.Optional }
);
发布于 2014-01-17 03:44:08
不,你的假设是错误的。当请求与路由匹配时,MVC不会遍历集合中的其余路由。
在这种情况下,请求/ABlogTitle
与集合中的第一个路由匹配,不再进行路由探测,其余的流水线(控制器选择、操作选择等)都会发生。
发布于 2014-01-17 23:29:46
您需要使用类似于正则表达式的条目来限制匹配,或者使用像/ RouteContraint /{id}这样的前缀。
否则,是的,您为“条目”设置的路由将匹配每个URL。
或者查看最新的MVC和Web API版本中提供的新路由:
http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
https://stackoverflow.com/questions/21177102
复制