UR.ANUS
Asp.net mvc framework
вернуться

Магдануров Гайдар Ильдарович

Шрифт:

Значения параметров шаблона маршрута по умолчанию, которые задаются в MapRoute в виде new { controller = "Home", action = "Index", id = "" }, представляют собой значения для параметров маршрута, которые будут использованы в том в случае, когда клиентский запрос их не содержит. Например, если обратиться к ресурсу со следующим запросом http://sample.domain/About/, в котором определен только первый параметр из шаблона {controller}/{action}/{id} , то механизм маршрутизации автоматически определит оставшиеся два на основании значений по умолчанию. То есть параметр controller получит значение About, а параметры action и id значения Index и пустую строку соответственно. Другими словами, на основании значений параметров по умолчанию запрос http://sample.domain/About/ будет интерпретироваться механизмом маршрутизации как запрос http://sample.domain/About/Index/. Что приведет к вызову действия Index у контроллера AboutController.

Здесь мы поверхностно рассмотрели работу механизма маршрутизации и то, как он участвует в работе с MVC Framework. В следующих разделах данной главы мы рассмотрим маршрутизацию более подробно.

Механизмы маршрутизации

В начале главы мы упомянули об основных классах, которые составляют механизм маршрутизации. В этой части главы мы рассмотрим их более подробно.

Маршрут и класс Route

Маршрут в понятии ASP.NET — это строка, которая представляет собой шаблон URL-строки запроса к веб-приложению. Этот шаблон определяет, какие запросы попадают под понятие данного маршрута, а какие нет. Шаблоны маршрутов содержат параметры, имена которых заключены в фигурные скобки. Обычно параметры разделены обратным слэшем (/) как разделяющие сегменты URL-строки. Например, маршрут, определенный следующим образом admin/{user}/{action}, содержит два параметра: user и action. Такому маршруту могут соответствовать следующие строки URL:admin/foo/add/ илиГде foo и bee определяются как значения параметра user, а add и edit — параметра action.

Механизм MVC Framework определяет два базовых параметра маршрутов: controller и action, которые предназначены для определения разработчиком месторасположения наименования контроллера и действия в строке запроса. Остальные параметры являются пользовательскими и определяются разработчиком. Например, следующий маршрут {controller}/{action}/{user}/{page} определяет кроме базовых параметров controller и action еще два пользовательских: user и page. Такому маршруту может соответствовать строка запросаМеханизм MVC Framework при сопоставлении данных маршрутов и строки запроса определит, что требуется вызвать действие с именем GetUserMessages в контроллере с именем UserController, которому нужно передать два параметра: user со значением user1 и page со значением 2.

Одним из базовых классов маршрутизации ASP.NET является класс Route, который позволяет разработчику определить свойства маршрута. Рассмотрим основные свойства, которые содержит класс Route:

? Constraints — свойство типа RouteValueDictionary, которое хранит все ограничения, накладываемые разработчиком на маршрут;

? DataTokens — свойство типа RouteValueDictionary, которое хранит набор параметров, не участвующих в разборе шаблона, но передающихся обработчику маршрута как дополнительная информация;

? Defaults — свойство типа RouteValueDictionary, которое хранит значения параметров маршрута по умолчанию. Данные значения используются, когда определенная для маршрута строка URL не содержит необходимого параметра;

? RouteHandler — свойство, реализующее интерфейс IRouteHandler, является обработчиком маршрута, который определяет, подходит или нет заданный URL запроса к маршруту;

? Url — строковое свойство, которое содержит определение шаблона маршрута.

Создание экземпляра Route не вызывает трудностей, например, в следующем фрагменте представлено создание маршрута, аналогичного тому, что создается в проекте MVC Framework по умолчанию:

var defaults = new RouteValueDictionary

{

{"controller", "Home"},

{"action", "Index"},

{"id", ""}

};

routes.Add(new Route(

"{controller}/{action}/{id}",

defaults,

null,

null,

new MvcRouteHandler

));

Класс Route имеет несколько конструкторов, конструктор с самым большим числом параметров определен так:

public Route(string url,

RouteValueDictionary defaults,

RouteValueDictionary constraints,

RouteValueDictionary dataTokens,

IRouteHandler routeHandler

)

Рассмотрим параметры, которые передаются в этот конструктор:

? url — обязательный параметр, определяет строку шаблона для маршрута;

? defaults — необязательный параметр, определяет значения по умолчанию для параметров маршрута;

? constraints — необязательный параметр, определяет ограничения для маршрута;

? dataTokens — необязательный параметр, определяет дополнительные данные для маршрута;

? routeHandler — обязательный параметр, определяет обработчик, реализующий интерфейс IRouteHandler для обработки маршрута. В MVC Framework обработчиком по умолчанию является класс MVCRouteHandler.

Коллекция маршрутов и класс RouteCollection

Для того чтобы механизм MVC Framework начал работать с маршрутом, который определяет пользователь, необходимо, чтобы маршрут попал в таблицу маршрутизации. Такая таблица основывается на классе RouteCollection, который представляет собой коллекцию маршрутов.

  • Читать дальше
  • 1
  • ...
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • ...

UR.ANUS - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • support@anus.bid