關於asp.net中路由的配置的幾個類(asp.net路由配置1)

來源:互聯網
上載者:User

一: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頁面。

這樣一個路由就完成,寫的不對的地方請各位大俠拍磚!!!!!!!!!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.