Практическое руководство. Построение URL-адреса из маршрута.
Обновлен: Ноябрь 2007
Можно использовать маршрутизацию ASP.NET для создания URL-адресов, соответствующих шаблонам, определенным в приложении ASP.NET. URL-адрес создается путем вызова метода GetVirtualPath класса RouteCollection и передачи словаря значений параметров. Механизм маршрутизации ASP.NET сравнивает значения параметров с шаблонами URL-адресов и создает URL-адрес на основе первого маршрута, шаблон которого соответствует параметрам.
Можно передать дополнительные значения в словаре значений параметров. Значения, соответствующие параметру в определении шаблона, включаются в URL-адрес. Дополнительные значения включаются как значения строки запроса.
При создании URL-адреса передаваемым параметрам могут соответствовать несколько определений маршрутов. При этом можно определить, какой маршрут следует использовать для создания URL-адреса, указав имя маршрута. Следует указать имя для маршрута при его добавлении в коллекцию маршрутов.
Определить маршруты в приложении ASP.NET нужно до формирования URL-адресов с использованием механизма маршрутизации URL. Дополнительные сведения см. в разделе Практическое руководство. Определение маршрута.. Сведения о настройке проекта веб-узла ASP.NET для использования маршрутизации см. в разделе Практическое руководство. Использование маршрутизации в веб-формах.
Создание URL-адреса на основе соответствующего маршрута
При формировании URL-адреса механизмом маршрутизации ASP.NET используется либо указанный именованный маршрут, либо первый маршрут, шаблон которого соответствует предоставленным параметрам.
Создание URL-адреса
Создайте экземпляр класса RouteValueDictionary, содержащий все значения параметров, которые нужно включить в URL-адрес. Значения параметров должны включать значения, соответствующие шаблону маршрута. Это может включать дополнительные значения; в этом случае эти значения присваиваются строке запроса.
Вызовите метод GetVirtualPath класса RouteCollection и передайте объект RouteValueDictionary для построения URL-адреса. Чтобы указать определенный маршрут, включите имя маршрута.
Метод GetVirtualPath возвращает объект VirtualPathData.
Из объекта VirtualPathData, возвращаемого методом GetVirtualPath, извлеките свойство VirtualPath, чтобы получить строку, представляющую URL-адрес.
Пример
В следующем примере демонстрируется создание URL-адреса на основе маршрута. В данном примере подразумевается, что в приложение ASP.NET было добавлено два маршрута. Первый маршрут называется SalesRoute и определяет шаблон SalesReport/{locale}/{year}. Второй маршрут называется ExpensesRoute и определяет шаблон ExpensesReport/{locale}/{year}. Дополнительные сведения см. в разделе Практическое руководство. Определение маршрута..
В этом примере показано, как задать имя маршрута при построении URL-адреса. Оба маршрута (SalesRoute и ExpensesRoute) принимают параметры year и locale. Поэтому нужно указать требуемый маршрут по имени.
В этом примере также показано включение дополнительного параметра при построении URL-адреса. При построении URL-адреса параметр category включается как значение строки запроса.
Dim vpd As VirtualPathData
Dim url As String
Dim parameters As RouteValueDictionary
parameters = New RouteValueDictionary(New With _
{.year = "2007", .locale = "en-CA", .category = "recreation"})
vpd = RouteTable.Routes.GetVirtualPath _
(Nothing, _
"SalesRoute", _
parameters)
url = vpd.VirtualPath
RouteValueDictionary parameters = new RouteValueDictionary {
{ "year", "2007" }, { "locale", "en-CA" }, {"category", "recreation"} };
VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(
null,
"SalesRoute",
parameters);
string url = vpd.VirtualPath;
См. также
Задачи
Практическое руководство. Определение маршрута.