На какой контроллер / действие это пойдет? - PullRequest
0 голосов
/ 25 апреля 2010

Предположим, это первая запись маршрута:

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 Ответ

1 голос
/ 25 апреля 2010

Единственное ограничение для 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)

Как вы можете видеть, в вашем случае маршрутизация работает так, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...