Вопрос

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

Это было полезно?

Решение

Никаких проблем.Просто создайте маршрут, 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-адресов чтобы выяснить это наверняка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top