MVC3路由使用URL中的参数名称

时间:2014-01-13 07:48:38

标签: asp.net-mvc-3 asp.net-mvc-routing

我有这些路线:

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}匹配。

显然我的想法不正确!

问题是:为什么没有参数名称的路线不匹配?

1 个答案:

答案 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 });