我正在尝试配置我的路由,以便我可以将博客条目(带有字符串ID)作为网址中的唯一段。
例如,
/ ABlogTitle - > Controller =“Blog”,Action =“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 }
);
答案 0 :(得分:1)
不,你的假设不正确。当请求匹配路由时,MVC不会遍历集合中的其余路由。
在这种情况下,请求/ABlogTitle
与集合中的第一条路线匹配,不再进行路径探测,并且管道的其余部分(控制器选择,动作选择等)也会发生。
答案 1 :(得分:0)
您需要使用类似正则表达式的RouteContraint来限制匹配或使用像/ entry / {id}这样的前缀。
否则,是的,您为“条目”设置的路线将匹配每个网址。
或者查看最新MVC和Web API版本中提供的新路由:
http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx