2010-04-25 35 views
0

假设这是第一路由条目:这会发生什么控制器/操作?

routes.MapRoute(
    "myRoute", 
    "employees/{city}/{pageNumber}", 
    new { controller="Employees", action = "List", pageNumber = 1 } 
); 

如果我提出以下要求

employees/london/2 

它被匹配到以下操作方法:

public ActionResult List(string city) {} 

是怎样发生的?我没有在我的对象默认值中指定“城市”:

new { controller="Employees", action = "List", pageNumber = 1 } 

请解释。谢谢!

+1

此操作还有哪些其他重载? – 2010-04-25 16:29:15

+0

列表没有超载。 – rkrauter 2010-04-25 16:44:48

回答

1

RouteData的唯一限制是它应该包含控制器和操作。其他值可以在没有违约的情况下生活。 例如

new { controller="Employees", action = "List", pageNumber = 1 } 

employees/london/2 -> Employees.List city=london pageNumber=2 
employees/london/ -> Employees.List city=london pageNumber=1 (becouse of defauld) 
employees ->this route will not be used, MVC will go find other routs 

,但如果你将使用

new { controller="Employees", action = "List", city="london" pageNumber = 1 } 

employees/london/2 -> same 
employees/london/ -> same 
employees ->Employees.List city=london(becouse of defauld) pageNumber=1 (becouse of defauld) 

正如你可以看到按照预期的情况下,路由的工作方式。

相关问题