Практическое руководство. Построение URL-адреса из маршрута.

Visual Studio 2010

Обновлен: Ноябрь 2007

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

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

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

Определить маршруты в приложении ASP.NET нужно до формирования URL-адресов с использованием механизма маршрутизации URL. Дополнительные сведения см. в разделе Практическое руководство. Определение маршрута.. Сведения о настройке проекта веб-узла ASP.NET для использования маршрутизации см. в разделе Практическое руководство. Использование маршрутизации в веб-формах.

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

Создание URL-адреса

  1. Создайте экземпляр класса RouteValueDictionary, содержащий все значения параметров, которые нужно включить в URL-адрес. Значения параметров должны включать значения, соответствующие шаблону маршрута. Это может включать дополнительные значения; в этом случае эти значения присваиваются строке запроса.

  2. Вызовите метод GetVirtualPath класса RouteCollection и передайте объект RouteValueDictionary для построения URL-адреса. Чтобы указать определенный маршрут, включите имя маршрута.

    Метод GetVirtualPath возвращает объект VirtualPathData.

  3. Из объекта VirtualPathData, возвращаемого методом GetVirtualPath, извлеките свойство VirtualPath, чтобы получить строку, представляющую URL-адрес.

В следующем примере демонстрируется создание URL-адреса на основе маршрута. В данном примере подразумевается, что в приложение ASP.NET было добавлено два маршрута. Первый маршрут называется SalesRoute и определяет шаблон SalesReport/{locale}/{year}. Второй маршрут называется ExpensesRoute и определяет шаблон ExpensesReport/{locale}/{year}. Дополнительные сведения см. в разделе Практическое руководство. Определение маршрута..

В этом примере показано, как задать имя маршрута при построении URL-адреса. Оба маршрута (SalesRoute и ExpensesRoute) принимают параметры year и locale. Поэтому нужно указать требуемый маршрут по имени.

В этом примере также показано включение дополнительного параметра при построении URL-адреса. При построении URL-адреса параметр category включается как значение строки запроса.

RouteValueDictionary parameters = new RouteValueDictionary { 
    { "year", "2007" }, { "locale", "en-CA" }, {"category", "recreation"} };

VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(
  null,
  "SalesRoute",
  parameters);

string url = vpd.VirtualPath;
Показ: