ASP.NET MVC架構之URL Routing(三)

來源:互聯網
上載者:User

一,基本概念:

1,路由的組件是System.Web.Routing,它是同.net 3.5 sp1一起發布的;所以此組件不開放原始碼。
2,在ASP.NET webform也可以使用該組件;
2,ASP.NET MVC中對其進行了擴充,定義規則,使用新的“MapRoute”輔助方法,它提供了極其簡單的句法,但能做同樣的事。

二,Routing的作用:

從可以看出,Routing用於
1,定義如何選擇Controller類,
2,定義調用哪個Action方法,
3,以及從URL/Querystring中自動解析變數值,並作為參數傳遞給方法。
下一步,控制器會執行對應的方法。

三,Routing的配置:

1,配置。通常,我們通過在Global.asax檔案中的Application_Start事件中添加routes來配置Routing規則,
Global.asax.cs檔案中的代碼:
public static void RegisterRoutes(RouteCollection routes)
        {
            //忽略對.axd檔案的Route,也就是和WebForm一樣直接去訪問.axd檔案
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route 名稱
                "{controller}/{action}/{id}", // 帶有參數的URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數預設值,id為選擇性參數
                 //在URL沒有指定時controller = Home, action = Index ,id=""
            );
            //可以通過routes.MapRoute()添加多個規則,
            //規則的順序很重要,根據Route的定義順序來自上而下匹配的,找到符合的就不向下執行了。

        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //在程式啟動的時候註冊我們前面定義的Route規則
            RegisterRoutes(RouteTable.Routes);
        }

2,規則對應的URL:
在一個route中,通過在大括弧中放一個預留位置來定義( { and } ),route定義中不在大括弧中的資訊則作為常量值。
為{controller}/{action}/{id}規則下,不同的URL請求的傳回值。

另外,還可以使用星號(*)匹配不確定個數的參數,這會匹配URL後面所有的剩餘的參數。例如:
query/{queryname}/{*queryvalues}規則對於url:
query/aspnetmvc/preview5/routing ,則queryvalues參數匹配的參數為值為 preview5/routing。

3,參數說明:
MapRoute()輔助方法是重載了的,可以接受2,3,或4個參數(路徑名字,URL句法,URL預設參數,URL參數Regex約束)。
例如:
routes.MapRoute(
    "Default",    //名稱隨便命名,但是上下文中不能重複                                          
    "{controller}/{action}/{id}",      //URL句法                     
    new { controller = "Home", action = "Index", UrlParameter.Optional },  //URL預設參數,
    new { id = @"[/d]*" } //id必須為數字,更複雜的約束可以通過擴充來實現
);

四,Routing與URL Rewrite的區別:

       1,URL Rewrite:改變程式處理的URL
       2,URL Route:根據URL的規則選擇執行
       3,兩者執行機制不同
       4,在某些情況下可以產生同樣結果
        5,URL Route更像是一種基礎支援
           – 適合用於開發基於ASP.NET架構的新架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.