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

Routing(Маршрутизация)

Маршрутизация ASP.NET позволяет использовать URL-адреса, не сопоставляемые с определенными файлами на веб-узле. Поскольку URL-адрес не сопоставляется с файлом, можно использовать в веб-приложении URL-адреса, описывающие действия пользователя, вследствие чего они более понятны пользователям.

В приложении ASP.NET, не использующем маршрутизацию, входящий запрос URL-адреса обычно сопоставляется физическому файлу на диске, например ASPX-файлу. Например, запрос адреса http://server/application/Products.aspx?id=4 сопоставляется файлу Products.aspx, содержащему код и разметку для отображения результата запроса в веб-обозревателе. Веб-страница использует значение в строке запроса id=4, чтобы определить, какой тип содержания следует отображать, однако это значение вряд ли будет иметь смысл для пользователя.

При маршрутизации ASP.NET задаются шаблоны URL-адресов, содержащие местозаполнители для значений, используемых при обработке URL-запросов. Во время выполнения части URL-адреса, следующие за именем приложения, разбиваются на отдельные значения в зависимости от заданного шаблона URL-адреса. Например, при запросе адреса http://server/application/Products/show/beverages маршрутный анализатор может передавать значения Products, show и beverages в обработчик для запроса. В случае же, если запрос не контролируется механизмом маршрутизации URL-адресов, фрагмент /Products/show/beverages интерпретируется как путь к файлу в приложении.

Можно также использовать шаблоны URL-адресов для программного создания URL-адресов, соответствующих маршрутам. Это позволяет централизовать логику создания гиперссылок в приложении ASP.NET.

Сравнение маршрутизации asp.Net и перезаписи url-адресов

Маршрутизация ASP.NET отличается от других схем перезаписи URL-адресов. При перезаписи URL-адресов входящие запросы обрабатываются путем фактического изменения URL-адреса до отправки запроса веб-странице. Например, приложение, использующее перезапись URL-адресов, может заменить URL-адрес /Products/Widgets/ на /Products.aspx?id=4. Кроме того, при перезаписи URL-адресов обычно отсутствует API для создания URL-адресов на основе шаблонов. Если при перезаписи URL-адресов изменяется шаблон URL-адреса, необходимо вручную обновлять все гиперссылки, содержащие первоначальный URL-адрес.

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

Определение маршрутов url-адресов

Определяемые пользователем шаблоны URL-адресов называются маршрутами. В маршруте указываются местозаполнители, сопоставляемые значениям, которые получаются в процессе анализа URL-запроса. Можно также указывать постоянные значения, используемые для сопоставления URL-запросов.

В маршруте местозаполнители (называемые также параметрами URL-адреса) определяются путем их заключения в фигурные скобки ( { и } ). Символ / при анализе URL-адреса воспринимается как разделитель. Информация в определении маршрута, отличная от разделителей и не заключенная в фигурные скобки, воспринимается как постоянное значение. Значения, извлекаемые между разделителями, присваиваются местозаполнителям.

Между разделителями можно определять несколько местозаполнителей, но они должны быть разделены постоянным значением. Например, {language}-{country}/{action} является допустимым шаблоном маршрута. Однако {language}{country}/{action} не является допустимым шаблоном, поскольку между местозаполнителями нет постоянного значения или разделителя. Поэтому механизм маршрутизации не может определить, каким образом следует отделять значение местозаполнителя language от значения местозаполнителя country.

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

Рисунок 1

Как правило, добавление маршрутов выполняется в методе, который вызывается из обработчика события Application_Start в файле Global.asax. Такой подход обеспечивает доступность маршрутов при запуске приложения. Он также обеспечивает возможность непосредственного вызова метода при модульном тестировании приложения. Если при модульном тестировании приложения требуется выполнять непосредственный вызов метода, тогда метод, регистрирующий маршруты, должен быть статическим (Shared в Visual Basic) и должен иметь параметр RouteCollection.

Добавление маршрутов выполняется путем их добавления в статическое свойство Routes класса RouteTable. Свойство Routes представляет собой объект RouteCollection, содержащий все маршруты приложения ASP.NET. В следующем примере приведен код из файла Global.asax, который добавляет объект Route, определяющий два параметра URL: action и categoryName.

protected 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()

));

}

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