首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 路由系統:根據路由規則生成 URL

     編輯:關於ASP.NET

ASP.NET 路由系統除了處理請求路由,另一大功能是根據註冊路由規則生成 URL,透過 RouteCollection.GetVirtualPath 方法實現。

GetVirtualPath 方法簽名

public class RouteCollection : Collection<RouteBase>
{
    public VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values);
    public VirtualPathData GetVirtualPath(RequestContext requestContext, string name, RouteValueDictionary values);
    public bool AppendTrailingSlash { get; set; }
    public bool LowercaseUrls { get; set; }
}

若未指定路由名稱,系統會遍歷集合尋找第一個回傳非 Null 的 VirtualPathData。參數 requestContext 可為 Null,此時以目前 HTTP 上下文建立預設 RequestContext。

變數值來源與優先順序

URL 模板中的變數值來源有三種,優先級由高到低:

  1. 手工提供的 values 參數
  2. RequestContext.RouteData.Values
  3. 路由物件定義的預設值

實例驗證

註冊路由模板 {areacode}/{days},預設值 areacode=010、days=2。在頁面中分別呼叫三種 GetVirtualPath 多載,觀察生成 URL 差異:

Response.Write(RouteTable.Routes.GetVirtualPath(null, null).VirtualPath + "<br/>");
Response.Write(RouteTable.Routes.GetVirtualPath(requestContext, null).VirtualPath + "<br/>");
Response.Write(RouteTable.Routes.GetVirtualPath(requestContext, values).VirtualPath + "<br/>");

URL 生成結果

結果證實變數選擇優先級結論:手工傳入值覆蓋 RouteData,RouteData 覆蓋預設值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved