2010-04-25 5 views
0

On suppose que c'est la première entrée d'itinéraire:Quel contrôleur/action cela va-t-il?

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

Si je fais la demande suivante

employees/london/2 

il obtient adapté à la méthode d'action suivante:

public ActionResult List(string city) {} 

Comment est-ce arrivé ? Je n'ai pas précisé « ville » dans mes paramètres par défaut de l'objet:

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

S'il vous plaît expliquer. Merci!

+1

Quelles sont les autres surcharges de cette action? –

+0

La liste n'a pas de surcharge. – rkrauter

Répondre

1

La seule limitation sur RouteData est qu'il doit contenir le contrôleur et l'action. D'autres valeurs peuvent bien fonctionner sans défaut. Par exemple

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 

mais si vous utilisez

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) 

Comme vous pouvez le voir dans votre cheminement de cas fonctionne comme prévu.

Questions connexes