我希望能够通过一个路由约束声明访问以下内容:
/picks
/picks/{teamID}/{week}
/picks/save/{teamID}/{week}
这不适用于第二个请求:
/picks/{teamID}/{week}
routes.MapRoute(
"picks",
"picks/{action}/{teamID}/{week}",
new { controller = "Picks",
action = "Index",
teamID = UrlParameter.Optional,
week = UrlParameter.Optional });
在我看来,该动作应默认为
Index
,因为我没有提供该动作,但我假设它实际上是在尝试找到动作{teamID}
(这是一个数字)。如何使此约束处理所有3种情况?
最佳答案
您只需要省略第一个路由的rout字符串中的操作即可:
routes.MapRoute(
"picks",
"picks/{teamID}/{week}",
new { controller = "Picks",
action = "Index",
teamID = UrlParameter.Optional,
week = UrlParameter.Optional });
记住要在更通用的路由之上放置更具体的路由。
例如:
"picks/{teamID}/{week}"
"picks/{action}/{teamID}/{week}"
"{controller}/{action}/{id}"
按照添加的顺序尝试路由。