如何:通过路由构造 URL。

更新:2007 年 11 月

可以使用 ASP.NET 路由生成与在 ASP.NET 应用程序中定义的模式相匹配的 URL.通过调用 RouteCollection 类的 GetVirtualPath 方法并传递参数值的字典创建该 URL。ASP.NET 路由会将参数值与 URL 模式进行比较,然后根据模式与参数匹配的第一个路由生成 URL。

可以传递参数值字典中的其他值。与路由定义中的参数匹配的值包含在 URL 中。其他值则作为查询字符串值包含在 URL 中。

创建 URL 时,可能会有多个路由定义与传入的参数匹配,此时可以通过提供路由的名称来指定创建 URL 时要使用的路由。您可以在将路由添加到路由集合时为其指定一个名称。

必须先在 ASP.NET 应用程序中定义路由,然后才能使用 URL 路由构造 URL。有关更多信息,请参见如何:定义路由。有关如何将 ASP.NET 网站项目配置为使用路由的信息,请参见如何:对 Web 窗体使用路由

基于匹配的路由创建 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}。有关更多信息,请参见如何:定义路由

此示例演示如何在构造 URL 时指定路由的名称。SalesRoute 和 ExpensesRoute 都采用参数 year 和 locale。因此,可通过使用名称来指定所需的路由。

示例还演示在构造 URL 时如何包括其他参数。category 参数在构造 URL 时将作为查询字符串值包含在 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;

请参见

任务

如何:定义路由

概念

ASP.NET 路由