Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Routing.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
67 Кб
Скачать
☆

Настройка значений по умолчанию для параметров маршрутов

При определении маршрута можно назначать для параметров значения по умолчанию. Значение по умолчанию используется, если значение параметра не указано в URL-адресе. Значения по умолчанию для маршрута устанавливаются путем присвоения словаря свойству Defaults класса Route. В следующем примере приведен маршрут со значениями по умолчанию.

void Application_Start(object sender, EventArgs e)

{

RegisterRoutes(RouteTable.Routes);

}

public static void RegisterRoutes(RouteCollection routes)

{

routes.Add(new Route

(

"Category/{action}/{categoryName}"

new CategoryRouteHandler()

)

{

Defaults = new RouteValueDictionary

{{"categoryName", "food"}, {"action", "show"}}

}

);

}

При обработке URL-запроса механизмом маршрутизации ASP.NET определение маршрута, приведенное в примере (с заданными по умолчанию значениями food для categoryName и show для action), возвращает результаты, представленные в следующей таблице.

Рисунок 2

Добавление ограничений к маршрутам

Помимо соответствия URL-запроса определению маршрута по количеству параметров в URL-адресе, можно указать, что значения параметров должны соответствовать определенным ограничениям. Если URL-адрес содержит значения, находящиеся за пределами установленных для маршрута ограничений, этот маршрут не используется для обработки запроса. Введение ограничений позволяет обеспечить соответствие значений, содержащихся в параметрах URL-адреса, требованиям приложения.

Ограничения определяются с использованием регулярных выражений или с использованием объектов, реализующих интерфейс IRouteConstraint. При добавлении определения маршрута в коллекцию Routes ограничения добавляются путем создания объекта RouteValueDictionary, содержащего тест проверки. Затем этот объект назначается в качестве значения свойства Constraints. Ключ в словаре идентифицирует параметр, к которому применяется ограничение. В качестве значения в словаре можно использовать либо строку, представляющую регулярное выражение, либо объект, реализующий интерфейс IRouteConstraint.

При использовании строки механизм маршрутизации воспринимает ее как регулярное выражение и проверяет допустимость значения параметра, вызывая метод IsMatch класса Regex. Регулярное выражение всегда рассматривается без учета регистра. Дополнительные сведения см. в разделе Регулярные выражения в .NET Framework.

При использовании объекта IRouteConstraint механизм маршрутизации ASP.NET проверяет допустимость значения параметра, вызывая метод Match объекта IRouteConstraint. Метод Match возвращает логическое значение, указывающее на допустимость значения.

В следующем примере приведены ограничения, задающие диапазон значений параметров locale и year.

void Application_Start(object sender, EventArgs e)

{

RegisterRoutes(RouteTable.Routes);

}

public static void RegisterRoutes(RouteCollection routes)

{

routes.Add(new Route

(

"{locale}/{year}"

, new ReportRouteHandler()

)

{

Constraints = new RouteValueDictionary

{{"locale", "[a-z]{2}-[a-z]{2}"},{year, @"\d{4}"}}

});

}

При обработке URL-запроса механизмом маршрутизации определение маршрута, приведенное в предыдущем примере, возвращает результаты, представленные в следующей таблице.

Рисунок 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]