我有这些路线:
routes.MapRoute("ListPage", "{controller}/{action}/{pn}/{ps}", new { controller = "home", action = "index", pn = 1, ps = 10 });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "home", action = "index", id = UrlParameter.Optional });
这使我可以使用以下网址:
/foo/bar/1/10
控制页面上的foos列表(第1页,每页10个项目)。万岁!
但是,下面给出了404:
/foo/bar/1
使用Url.Action("bar", "foo", new { id = 1})
提供网址
/foo/bar?id=1
然后正确匹配动作签名
public ActionResult Bar(int id) { //stuff }
我的想法是表格中的第一条路线不匹配,因为{pn}
和{ps}
都是必需的。
因此它会下降到第二条路线,然后应该将参数与{id}
匹配。
显然我的想法不正确!
问题是:为什么没有参数名称的路线不匹配?
答案 0 :(得分:0)
尝试交换routes
张贴
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "home", action = "index", id = UrlParameter.Optional });
routes.MapRoute("ListPage", "{controller}/{action}/{pn}/{ps}", new { controller = "home", action = "index", pn = 1, ps = 10 });