在項目中我們引用了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); //測試路由