Книга: ASP.NET MVC Framework
Шаблон маршрута и свойство Url
Шаблон маршрута и свойство Url
При создании маршрута строковый параметр Url
определяет шаблон маршрута, который, как правило, задает некоторую группу возможных клиентских запросов. Следует учитывать, что при наличии нескольких маршрутов механизм маршрутизации ASP.NET всегда выбирает самый первый из них — тот, что был добавлен в таблицу маршрутизации первым.
Как мы уже говорили, по умолчанию MVC Framework создает один-единственный маршрут с именем Default
и шаблоном {controller}/{action}/{id}.
Этот маршрут хорош тем, что он один позволяет обрабатывать большую часть возможных пользовательских запросов. По сути такой шаблон говорит о том, что данный маршрут определяет все запросы с вложениями до третьего уровня, т. е. этот маршрут обработает и http://sample.domain/level1/ и http://sample.domain/level1/level2/, и http://sample.domain/level1/level2/level3/, где level1, level2 и level3 могут принимать любые значения. На самом деле это очень большое количество возможных запросов и на практике один маршрут Default
покрывает все требования разработчиков к маршрутизации.
Однако разработчик может добавить гибкости своему проекту и улучшить представления строк URL, если определит свои маршруты. Далее представлено два подобных маршрута:
routes.MapRoute(
"AccountLogOn",
"LogOn",
new { controller = "Account", action = "LogOn" }
routes.MapRoute(
"Home",
"{action}",
new { controller = "Home", action = "Index" }
Первый вызов MapRoute
создает маршрут под наименованием AccountLogOn
, шаблон которого четко соответствует только одному возможному клиентскому запросу http://sample.domain/Logon. Второй вызов создает маршрут Home более широкого определения. Под этот маршрут попадают все клиентские запросы вида http://sample.domain/Home/{action}.
Польза от создания таких маршрутов очевидна. Имея набор именованных маршрутов, которые четко определяют область клиентских запросов, а не обхватывают все запросы подряд, вы можете более гибко управлять маршрутами. Например, теперь для простого перенаправления на страницу входа в систему вам достаточно будет вызвать следующий метод:
public ActionResult SomeAction()
{
return RedirectToRoute("AccountLogOn");
}
Другим видимым преимуществом этого маршрута является то, что согласно ему клиентский запрос не обязательно должен содержать в себе наименование контроллера. Таким образом, путь http://some.domain/Account/LogOn уменьшается до http://some.domain/LogOn, что придает ссылкам вебприложения более компактный вид. Компактность строк запросов может играть свою роль в случае, когда в большом веб-приложении используются десятки контроллеров с массой действий и параметров.
- Шаблон
- Удаление шаблонов узлов STP
- Сохранение и использование шаблона узла
- Создание рабочей области для собраний с использованием шаблона
- Часть III. Шаблоны разработки через тестирование
- Пример использования шаблона «Выводы – рекомендации»
- Повторяем части шаблона
- Шаблон: значение по умолчанию
- Spurl
- Шаблоны
- Практическая работа 36. Использование шаблонов и тем
- Свойство WindowsState