【发布时间】:2014-01-13 07:48:38
【问题描述】:
我有这些路线:
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}。
显然我的想法是不对的!
问题是:为什么没有参数名路由不匹配?
【问题讨论】:
标签: asp.net-mvc-3 asp.net-mvc-routing