我注册了一条路线:
routes.MapRoute(
"Journals",
"Journals/{year}/{month}/{id}",
new {
controller = "Journals",
action = "Get",
year = UrlParameter.Optional,
month = UrlParameter.Optional,
id = UrlParameter.Optional
}
);
动作:
public ActionResult Get(int? year, int? month, int? id)
稍后查看(只是为了检查):
@Url.Action("Get", "Journals")
@Url.Action("Get", "Journals", new { year = 2013 })
@Url.Action("Get", "Journals", new { year = 2013, month = 4 })
@Url.Action("Get", "Journals", new { year = 2013, month = 4, id = 1 })
结果是:
/Journals
/Journals
/Journals/2013/4
/Journals/2013/4/1
所以第二个网址错过了参数。怎么了?
答案 0 :(得分:1)
你不能有超过1个连续的可选路线参数..因为它无法理解哪一个缺失..
2013年 / Journals / 2013 可以解释为year
或month
或id
< / p>
有关使用catch-all路由参数的解决方法,请参阅Infinite URL Parameters for ASP.NET MVC Route。