다음을 통해 공유


방법: 라우팅을 통해 URL 만들기

업데이트: 2007년 11월

ASP.NET 라우팅을 사용하면 ASP.NET 응용 프로그램에 정의되어 있는 패턴과 일치하는 URL을 생성할 수 있습니다. RouteCollection 클래스의 GetVirtualPath 메서드를 호출하고 매개 변수 값 사전을 전달하여 URL을 만들 수 있습니다. ASP.NET 라우팅은 매개 변수 값을 URL 패턴과 비교하여 매개 변수와 패턴이 일치하는 첫 번째 경로를 기초로 URL을 생성합니다.

매개 변수 값 사전에 값을 추가로 전달할 수 있습니다. 경로 정의의 매개 변수와 일치하는 값은 URL에 포함하며, 추가 값은 쿼리 문자열 값으로 포함합니다.

URL을 만들 때 전달하는 매개 변수와 둘 이상의 경로 정의가 일치할 수 있습니다. 이러한 경우에는 경로 이름을 제공하여 URL을 만들 때 사용할 경로를 지정할 수 있습니다. 경로 이름은 경로를 경로 컬렉션에 추가할 때 지정합니다.

URL 라우팅을 사용하여 URL을 생성하려면 먼저 ASP.NET 응용 프로그램에 경로를 정의해야 합니다. 자세한 내용은 방법: 라우팅 정의를 참조하십시오. 라우팅을 사용하도록 ASP.NET 웹 사이트 프로젝트를 구성하는 방법에 대한 자세한 내용은 방법: Web Forms을 포함한 라우팅 사용을 참조하십시오.

일치하는 경로를 기반으로 URL 만들기

ASP.NET 라우팅에서는 URL을 생성할 때 사용자가 지정한 명명된 경로를 사용하거나, 사용자가 제공한 매개 변수와 패턴이 일치하는 첫 번째 경로를 사용합니다.

URL을 만들려면

  1. URL에 포함할 모든 매개 변수 값이 포함된 RouteValueDictionary 클래스의 인스턴스를 만듭니다. 매개 변수 값에는 경로 패턴과 일치하는 값이 포함되어야 합니다. 추가 값을 포함할 수도 있으며, 이 경우 해당 값은 쿼리 문자열에 할당합니다.

  2. RouteCollection 클래스의 GetVirtualPath 메서드를 호출하고 URL을 만드는 데 사용할 RouteValueDictionary 개체를 전달합니다. 특정 경로를 지정하려면 경로 이름을 포함합니다.

    GetVirtualPath 메서드는 VirtualPathData 개체를 반환합니다.

  3. GetVirtualPath 메서드에서 반환된 VirtualPathData 개체에서 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;

참고 항목

작업

방법: 라우팅 정의

개념

ASP.NET 라우팅