.NET MVC пользовательская маршрутизация - PullRequest
3 голосов
/ 26 октября 2009

Мне было интересно, смогу ли я создать карту маршрутизации с более высоким уровнем, чем у контроллера. Типичная маршрутизация будет включать "/ controller / action / id". Я ищу что-то вроде «section / controller / action / id» или «controller / section / action / id». Как я могу это сделать?

1 Ответ

4 голосов
/ 26 октября 2009

Нет проблем. Просто создайте маршрут, URL которого, например,

path/to/my/application/{controller}/{action}/{id}

... и поставьте контроллер по умолчанию и действуйте как обычно.

Конкретный пример этого

context.MapRoute(
    "Admin_default",
    "admin/{controller}/{action}/{id}",
    new { controller = "AdminHome", action = "Index", id = "" }
);

Это сопоставит, например, следующие URL:

/admin/                   => AdminHomeController.Index
/admin/adminhome/         => AdminHomeController.Index
/admin/other/             => OtherController.Index
/admin/statistics/view/50 => StatisticsController.View(50)

Обратите внимание, что если у вас также есть маршрут по умолчанию, например, такой:

context.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

... тогда методы действия контроллера в маршрутизации администратора также могут быть доступны по этому маршруту. Используйте Отладчик маршрутизации URL , чтобы узнать наверняка.

...