1.全局約定路由
這種方式配置優先級比較低,如果控制器或者方法上標記了特性路由那么優先走特性路由。
當建立好一個mvc項目里,路由都是默認配置好的。
如果建立的是空項目那么需要手動配置:
1.需要在ConfigureServices方法中添加mvc服務
services.AddMvc();
2.在Configure添加mvc中間件:
app.UseMvcWithDefaultRoute(); //添加mvc中間件並使用默認路由配置
這里添加mvc中間時使用的是默認的路由配置,默認的路由配置就是跟上圖的一樣。如果url地址欄controller為空那么默認為home,action為空那么默認為index方法,最后一個/id是可空的(帶?代表可空的,正則約束)。當然也可以自定義一些路由:
app.UseMvc(builder => { builder.MapRoute("default", "{controller=Home}/{action=Index}/{Id?}"); //添加mvc中間件並使用自定義路由配置 builder.MapRoute("areas", "{area:exists}/{controller=Home}/{action=Index}/{Id?}"); //區域路由配置 });
這里區域路由配置中的 {area:exists} 這個exists不僅可以路由參數能從Url地址匹配到值還要確保路由參數值在項目中能找到真正的文件夾或文件,這樣整個路由才算匹配成
2.特性標記路由
特性標記路由是使用Route特性標記在標記在控制器或者方法上的,Route必須傳入一個參數,該參數為字符串
如圖:
如果Route標記在控制器上,那么需要傳入參數則為匹配的控制器名,
如果Route標記在控制器上,那么需要傳入參數則為匹配方法名。
如果需要配置類似默認路由配置那樣方法名為空就默認匹配某個方法時,則不在方法配置或者配置空字符串即可(注意:如果出現多個不配置或者配置空字符串時則無法匹配,出現異常):
如果想默認使用控制器名稱和方法名稱作為匹配規則可以這樣來配置:
也可以直接在控制器上這樣配置:
[Route("[Controller]/[Action]")]
區域配置,前面我們已經添加了區域路由配置。我們只需要添加區域然后添加控制器即可。在控制器上使用Area特性標記區域名稱即可: