乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Asp.Net MVC2.0 Url 路由

       修行的嘟嘟 2012-08-07
       本篇文章是初識Asp.Net MVC2.0 的后續(xù)的介紹。此文將從Routing未開放源代碼開始,還會對Asp.Net的Url重寫技術做個簡單介紹。并簡單介紹Asp.Net MVC2.0 Url路由技術的使用。

           Url路由是MVC很重要的核心的一部分。不過它是單獨于MVC項目,而且沒有開源。它作為微軟的一個獨立的項目抽取了出來,在Asp.Net MVC中只是引用了這個dll。新建一個MVC Web項目,打開Global.asax。我們看到系統(tǒng)幫我們添加了using System.Web.Routing 引用。Routing作為一個單獨的dll被我們的項目引用。微軟并沒有對Routing進行開放源代碼。所以:Asp.Net MVC是開源的,但是Routing不是開源的!

           首先講一下Asp.Net的Url重寫技術。一種最簡單實現(xiàn)Url重寫技術就是在Global.asax文件中

           protected void Application_BeginRequest(object sender, EventArgs e)
           {

               string originalUrl = Request.Url.PathAndQuery;//獲取原先的Url請求(假的請求)

             //轉化成真的url請求....

             HttpContext.Current.RewritePath(newurl);//將針對Url請求交給HttpContext

           }

           舉個例子:一個假的Url地址:http://www./news/sports-2009-1-1-201.html

           看到上面的那個url其實很多情況下那不是一個真正的url,不一定存在sports-2009-1-1.html這么一個html頁。我們如果在Application_BeginRequest事件中將這個url重寫成這樣:

      http://www./news/sports.aspx?date=2009-1-1&id=201 這才是真正的url!

           現(xiàn)在開始講Asp.Net MVC的路由機制,首先要有個觀念就是:Asp.Net MVC的url地址是表現(xiàn)的web程序的一個邏輯的結構。新建一個Asp.Net MVC Web項目。然后按F5直接可以運行。頁面會自動跳轉到http://localhost:端口號/Home/Index頁面。玄機還是在Global.asax中??聪旅娲a:

      復制代碼
      public static void RegisterRoutes(RouteCollection routes)
      {
      routes.IgnoreRoute(
      "{resource}.axd/{*pathInfo}");

      routes.MapRoute(
      "Default", // 路由名稱
      "{controller}/{action}/{id}", // 帶有參數(shù)的 URL
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // 參數(shù)默認值
      new string[] { "MvcDemo.Controllers" }
      );
      復制代碼

       

       

      Global.asax中的RegisterRoutes方法中注冊了一個名字叫:Default的路由,格式是:
      http://localhost:端口號/controller/action
      并添加了這條路由的默認值new { controller
      = "Home", action = "Index"}。所以我們按F5啟動的時候,
      地址欄是:
      http://localhost:端口號/
      這個樣子,則匹配到我們的這條路由,并沒有具體值,就匹配了我們的默認值。
      頁面會則自動跳轉到http://localhost:端口號/Home/Index頁面
      本篇主要講述Routing組件的作用,以及舉幾個實例來學習Asp.Net MVC2.0 Url路由技術。

           接著上一篇開始講,我們在Global.asax中注冊一條路由后,我們的請求是怎么轉到相應的View的呢?Controller和Action是怎么解析的?這就是Routing組件干的事情了。

           Routing的作用:它首先是獲取到View傳過來的請求,并解析Url請求中Controller和Action以及數(shù)據(jù),其次他將識別出來的數(shù)據(jù)傳遞給Controller的Action(Controller的方法)。這是Routing組件的兩個重要的作用!

      下面我們從幾個例子來講解一下Url路由的使用。

      MapRoute()有6個方法可以重載,下面舉5個例子相應介紹!

      實例一:首先講解的是系統(tǒng)默認提供的路由格式,下面是系統(tǒng)給的默認代碼:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      public static void RegisterRoutes(RouteCollection routes)
      {
          routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
       
          routes.MapRoute(
              "Default", // 路由名稱
              "{controller}/{action}/{id}", // 帶有參數(shù)的 URL
              new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數(shù)默認值
          );
        }

      Url格式為:http://localhost:0000/home/index  對應規(guī)則為:{controller}/{action}/{id}  黑體部分就是對應部分。這還是有默認值的情況。

      詳細匹配應該為:http://localhost:0000/Custom/Detials/1   去掉主機域名,剩下的對應就是匹配Controller和actiong了。通過Routing組件解析這個Url,Controller是Custom,Action是Detials。傳遞過去的Id是1。

           這就是使用了MapRoute( string name, string url, object defaults);這個方法的重載。

      實例二:不使用默認值的Url路由規(guī)則

        函數(shù)頭:MapRoute( string name, string url);

         routes.MapRoute("沒有默認值路由規(guī)則", "{controller}/{id}-{action}");

        適合的Url例子:http://localhost:0000/Custom/1-Detials  

        它將不匹配http://localhost:0000/

      實例三:帶名稱空間的Url路由規(guī)則

            函數(shù)頭:MapRoute( string name, string url, string[] namespaces);//路由名,Url規(guī)則,名稱空間

            routes.MapRoute(
                    "MyUrl", // 路由名稱
                    "{controller}/{id}-{action}", // 帶有參數(shù)的 URL
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // 參數(shù)默認值
                    new string[] { "MvcDemo.Controllers" }//命名空間
                );

             Url:http://localhost:0000/Custom/1-Detials

             這個例子是帶命名空間的路由規(guī)則,這在Aeras使用時非常有用。不多說,后面再說!

      實例四:帶約束的路由規(guī)則

            函數(shù)頭:MapRoute( string name, string url, object defaults, object constraints);//路由名,Url規(guī)則,默認值,名稱空間

            routes.MapRoute(
                      "Rule1",
                      "{controller}/{action}-{Year}-{Month}-{Day}}",
                      new { controller = "Home", action = "Index", Year = "2010", Month = "04", Day = "21" },
                      new { Year = @"^\d{4}", Month = @"\d{2}" }
                  );

             Url:http://localhost:14039/home/index-2010-01-21

      實例五:帶名稱空間,帶約束,帶默認值的路由規(guī)則

            函數(shù)頭:MapRoute( string name, string url, object defaults, object constraints, string[] namespaces);

              routes.MapRoute(
                      "Rule1",
                      "Admin/{controller}/{action}-{Year}-{Month}-{Day}",
                      new { controller = "Home", action = "Index", Year = "2010", Month = "04", Day = "21" },
                      new { Year = @"^\d{4}", Month = @"\d{2}" },
                      new string[] { "MvcDemo.Controllers" }
                  );

              Url:http://localhost:14039/Admin/home/index-2010-01-21

      實例六:捕獲所有的路由

             routes.MapRoute(
                      "All", // 路由名稱
                      "{*Vauler}", // 帶有參數(shù)的 URL
                      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數(shù)默認值
                  );
                

      關于Global.asax剩余部分的說明:

             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");是忽略這個規(guī)則的Url

       

         AreaRegistration.RegisterAllAreas();//注冊所有的Areas
             RegisterRoutes(RouteTable.Routes);//注冊我們寫的規(guī)則
             //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);//調試用語句,需要下載RouteDebug.dll,并添加引用!加入這句話后就可以測試Url路由了。


        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多