MVC MVC 路由詳解


在項目中我們引用了System.Web.Routing;   Routing的作用:

確定Controller

確定Action

確定其他參數

根據識別出來的數據, 將請求傳遞給Controller和Action.

 

Global.asax中

 

在App_Start目錄中的RouteConfig.cs文件

注冊一條路由規則

name 參數:

   規則名稱, 可以隨意起名.不可以重名,否則會發生錯誤,路由集合中已經存在名為 “Default” 的路由。路由名必須是唯一的。 

url 參數:

 url獲取數據的規則, 這里不是正則表達式, 將要識別的參數括起來即可, 比如: {controller}/{action}

defaults 參數:

 url參數的默認值. 我們只建立了一條url獲取數據規則: {controller}/{action}  那么這時就會為action參數設置defaults參數中規定的默認值. new { controller = "Home", action = "Index" }

 

多條路由規則

 

 

RouteDebug.dll

RouteDebug.dll調試類庫放入packages包下,packages文件夾下包含項目用到的所有第三方庫。 然后添加引用RouteDebug.dll到項目中。

在Global.asax.cs注冊路由之后添加代碼:

RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);   重寫了路由調試的地址,將已經注冊了的路由規則進行測試。

 

例如:

  //從繁到簡的寫法,參數多的寫前面/難匹配的寫前面   多個路由設計

          //  routes.MapRoute(
          //name: "FF",
          //url: "{controller}-{action}-{id}-{name}",
          //defaults: new { controller = "Home", action = "Index" }
          //);

          //  routes.MapRoute(
          //  name: "DD",
          //  url: "{controller}-{action}-{id}",
          //  defaults: new { controller = "Home", action = "Index"}
          //  );

          //  routes.MapRoute(
          //  name: "SS",
          //  url: "{controller}-{action}",
          //  defaults: new { controller = "Home", action = "Index"}
          //  );          

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

啟用測試路由,不管你打開那個Action都會跳到它的測試頁面去 

  RouteConfig.RegisterRoutes(RouteTable.Routes); //注冊路由
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            //RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); //測試路由

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM