Pull to refresh

URL маршрутизация в ASP.NET 4 Web Forms

Reading time 3 min
Views 10K
Original author: Scott Gu
imageЧто такое URL маршрутизация?

URL маршрутизацию мы впервые представили в ASP.NET 3.5 SP1, которая сейчас используется в ASP.NET MVC приложениях для предоставления чистых, SEO-дружелюбных, «веб 2.0» URL адресов. URL маршрутизация позволяет настраивать приложение на прием запрашиваемых адресов, которые не соответствуют физическим файлам. Вы можете использовать маршрутизацию для объявления URL адресов, которые семантически содержательны для пользователей, и которые могут помочь оптимизации для поисковых систем (SEO).

Например, вот URL адрес традиционной страницы, которая отображает категории продуктов:
www.mysite.com/products.aspx?category=software

Используя URL маршрутизацию в ASP.NET 4 вы можете сконфигурировать приложение, чтобы оно могло принимать следующий URL, для отображения той же информации:
www.mysite.com/products/software

С ASP.NET 4.0, URL адреса, как показано выше, могут быть привязаны к классам контроллера ASP.NET MVC и к простым ASP.NET Web Forms страницам.

Привязка URL адресов, используя ASP.NET MVC

Движок URL маршрутизации представленный c ASP.NET 3.5. SP1 предоставляет мощный способ перехвата входящих URL адресов. Вы пишите код, который является частью загрузки приложения для регистрации/привязки URL адресов, которые совпадают с определенным форматом для написания обработчиков.

Ниже представлен пример того, как вы можете использовать ASP.NET MVC сегодня для привязывания /products/software URL адреса к классу контролера “Products”, у которого присутствует метод с названием “Browse”:

image

Привязка URL адресов, используя ASP.NET Web Forms

ASP.NET 4.0 позволяет вам также использовать движок URL маршрутизации, для привязки URL адресов к ASP.NET Web Forms страницам.

Ниже представлен пример, как вы можете использовать метод-помошник MapPageRoute() в ASP.NET 4.0 для привязки URL адреса /products/software к странице “Products.aspx”, которая находится непосредственно в корневой директории:

image

Первые два параметра хелпера MapPageRoute() точно такие, как и у MapRoute(). Первый параметр задает дружественное имя маршруту, второй определяет формат URL адреса. Третий параметр указывает странице Products.aspx обрабатывать URL, вместо класса контроллера. Вы можете опционально определить дополнительные параметры для MapPageRoute(), которые используются, как «ограничения маршрута» и предоставляют «значения по умолчанию для параметров», как это возможно сделать у ASP.NET MVC при регистрации маршрута.

На странице Products.aspx вы можете писать код, как показано ниже, который использует новое ASP.NET 4.0 свойство Page.RouteData для получения значения параметра “category” привязанное, используя URL фильтр /products/{category}, который соединяет категорию продуктов для отображения:

image

В дополнение, для программного доступа к входящим параметрам маршрутизатора используя вышеуказанный код, вы можете использовать новый декларативный элемент управления <asp:routeparameter> с любым ASP.NET DataSource элементом управления для декларативной связи значением маршрута. Например, ниже, мы используем <asp:routeparameter> для связи параметра @category select запроса, c параметром /products/{category} в URL маршрутизатора:

image

Получение URL адресов в ASP.NET Web Form

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

Например, выше, когда мы привязывали /product/{category} URL, мы давали ей дружелюбное имя — “products-browse”. Это позволяет нам использовать новый вспомогательный метод Page.GetRouteUrl() для поиска маршрута в маршрутизационной системе URL адресов, опционально определить параметры для него и далее вернуть реальные URL

Например, ниже представленный код, возвращает значение URL “/products/software”

image

Вы можете получить доступ к вспомогательному методу в code-behind файле или непосредственно в .aspx файле.

Также, появился набор методов Response.RedirectToRoute(), которые можно использовать для переадресации пользователей по маршруту (не зависимо где использовать в MVC или Web Forms) и опционально передавать ему параметры.

Обработка PostBack сценариев

URL маршрутизация в ASP.NET 4.0 полностью поддерживает постбек сценарии. Элемент управления <form runat=”server”> автоматически подставит URL, по которому сгенерировалась страница. Например, если вы открываете страницу с адресом /products/software, любой серверный элемент управления <form runat=”server”> сгенерирует на выходе <form action=”/products/software”> — это означает, что любой постбек сценарий, который происходит на странице, сохраняет оригинальный URL.

Все это позволяет поддерживать чистые, SEO-дружественные, читабельные URL адреса в Web Forms и постбек сценариях, и позволяет избегать хитроумных трюков, которые сейчас постоянно используются в модулях перезаписи URL для достижения некоторых возможностей.
Tags:
Hubs:
+9
Comments 13
Comments Comments 13

Articles