一:RouteDataMSDN的解釋是:包含所請求路由的相關值。包含你設定的路由模式的所有參數值。
講下RouteData的幾個屬性:
1:DataTokensMSDN的解釋--擷取在asp.net路由確定路由是否匹配時,傳遞到路由處理常式但未使用的自訂的集合..
也就是說獲得的是你配置路由的路由名稱,符合當前路由的路由名稱。
代碼是最能說明問題的證據如下:定義如下路由
routes.MapPageRoute("CompanySite_Detail", "{Path1}/{Id}",
"~/Default.aspx",
false,
new RouteValueDictionary { { "Path1", "Default" }, { "Path2", "" } },
new RouteValueDictionary { { "Path1", "Default" }, { "Id", @"\d+" } });
在請求/44/Default這個路徑時符合上面所定義的路由,使用Page.RouteData.DataTokens獲得一個集合RouteValueDictionary,查看value值就是"CompanySite_Detail"。
2:Route MSDN解釋--擷取或設定表示路由的對象。也就是你配置的那路由的所有資訊。
RouteBase r = this.Page.RouteData.Route;返回的是一個RouteBase對象。關於RouteBase請查看MSDN
http://msdn.microsoft.com/zh-cn/library/system.web.routing.routebase.aspx
3:RouteHandler MSDN解釋--返回的是處理路由的對象。這就像我們的IhttpHander一樣。對IhttpHander的解析可以看Fish Li寫的
http://www.cnblogs.com/fish-li/archive/2011/09/05/2168073.html已經寫的非常完美我就不關公前賣弄了。
4:Values 經常用到非常重要的一個屬性MSDN解釋--擷取路由的 URL 參數值和預設值的集合。這個解釋很好理解就是好的你這隻的路由的所有參數
this.Page.RouteData.Values["Id"].ToString();
這裡就是擷取參數Id的值。RouteData.Values的傳回值同樣是一個集合RouteValueDictionary裡麵包含path1和path2
二:RouteTable類MSDN解釋--儲存應用程式的 URL 路由。主要用在在global.asax.cs檔案中將所有路由註冊入程式中。
1:屬性Routes這個是個集合,是個RouteCollection類型。可以將程式中所有路由添加到次集合中。
Routes有個中要的方法:Routes.MapPageRoute(string routeName, string routeUrl, string physicalFile, bool checkPhysicalUrlAccess, RouteValueDictionary defaults, RouteValueDictionary constraints);
此方法有五個重寫的方法,參數1是路由名稱,參數2是路由的模式,參數3是檔案的實體路徑即請求的頁面路徑,參數4是一個值,該值指示 ASP.NET 是否應驗證使用者是否有權訪問物理 URL(始終會檢查路由 URL)。 此參數設定 System.Web.Routing.PageRouteHandler.CheckPhysicalUrlAccess,參數5是給相應的參數設定預設值,參數6是佈建要求的參數的條件
三:Page對象的一個使用路由的重要方法GetRouteUrl(string routeName, RouteValueDictionary routeParameters);這個方法是擷取相關路由的相關方法
參數1是你設定的路由的的名稱,參數2是給路由的相關參數設定相應的值。
看如下例子:
void Application_Start(object sender, EventArgs e)
{
//註冊所有的您設定的所有的路由規則,以便請求相應路徑時去對應相應的規則,RouteTable類儲存了所有規則的URL的路徑,
//RouteTable.Routes的是一個集合RouteCollection,儲存了所有的使用者定義的路由規則,寫在Application_Start方法中的原因是將所有的路由 // 規則註冊到程式中
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
//定義一個路由規則當請求/Default/+數字時就是請求defaut頁面
routes.MapPageRoute("CompanySite_Detail", "{Path1}/{Id}",
"~/Default.aspx",
false,
new RouteValueDictionary { { "Path1", "Default" }, { "Path2", "" } },
new RouteValueDictionary { { "Path1", "Default" }, { "Id", @"\d+" } });
}
在aspx.cs檔案中可以這樣獲參數Id
string ss = this.Page.RouteData.Values["Id"].ToString();//獲得參數Id可以根據ss到資料庫去查詢相關內容。
在頁面上即aspx.cs後台上可以這樣寫HyperLink2.NavigateUrl=Page.GetRouteUrl("CompanySite_Detail",new {Path1="Default",Path2=11});給已個HyperLike設定跳轉路徑是/defaut/44頁面。
這樣一個路由就完成,寫的不對的地方請各位大俠拍磚!!!!!!!!!!