HOW TO:從路由建構 URL

更新:2007 年 11 月

您可以使用 ASP.NET 路由產生符合 ASP.NET 應用程式中所定義之規則的 URL。呼叫 RouteCollection 類別的 GetVirtualPath 方法並且傳遞參數值的字典,可以藉此建立 URL。ASP.NET 路由會將參數值與 URL 規則進行比較,然後根據符合參數的第一個路由,建立 URL。

您可以傳遞參數值字典中的額外值。符合路由定義中的參數會加入 URL 中。額外的值則會以查詢字串的形式加入。

建立一個 URL 時,可能同時會有多個路由定義符合您所傳遞的參數。這時候,您可以提供路由名稱,指定要使用哪一個路由建立 URL。將 URL 加入路由集合時,您要指定路由名稱。

在利用 URL 路由建構 URL 時,必須先在 ASP.NET 應用程式中定義路由。如需詳細資訊,請參閱 HOW TO:定義路由。如需設定 ASP.NET 網站專案以使用路由的詳細資訊,請參閱 HOW TO:以 Web Form 進行路由

根據符合的路由建立 URL

ASP.NET 路由建構 URL 時,會使用您指定的具名路由,或是根據符合所提供的參數中,使用第一個具備規則的路由。

若要建立 URL

  1. 建立 RouteValueDictionary 類別的執行個體,其中包含您想要在 URL 中加入的所有參數值。參數值必須包含符合路由規則的值。參數值也可以加入額外的值,若是在這種情況下,這些額外加入的值會指派做為查詢字串。

  2. 呼叫 RouteCollection 類別的 GetVirtualPath 方法,並傳遞 RouteValueDictionary 物件以建構 URL。如果要指出特定路由,請加入路由名稱。

    GetVirtualPath 方法會傳回 VirtualPathData 物件。

  3. GetVirtualPath 方法傳回的 VirtualPathData 物件中,擷取 VirtualPath 屬性以取得代表 URL 的字串。

範例

以下範例將示範如何利用路由建立 URL。這個範例會假設您已將兩個路由加入至 ASP.NET 應用程式。第一個路由名稱為 SalesRoute,而且定義規則 SalesReport/{locale}/{year}。第二個路由名稱為 ExpensesRoute,而且定義規則 ExpensesReport/{locale}/{year}。如需詳細資訊,請參閱 HOW TO:定義路由

下列範例會示範如何在建構 URL 時,指定路由名稱。SalesRoute 與 ExpensesRoute 都會使用 year 及 locale 這兩個參數。因此,您可以使用名稱指定想要的路由。

範例程式碼也會示範如何在建構 URL 時,加入額外的參數。category 參數會在建構 URL 時加入其中,做為查詢字串值。

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;

請參閱

工作

HOW TO:定義路由

概念

ASP.NET 路由