這種方式配置優先級比較低,若是控制器或者方法上標記了特性路由那麼優先走特性路由。web
當創建好一個mvc項目裏,路由都是默認配置好的。api
若是創建的是空項目那麼須要手動配置:mvc
1.須要在ConfigureServices方法中添加mvc服務app
services.AddMvc();
2.在Configure添加mvc中間件:ui
app.UseMvcWithDefaultRoute(); //添加mvc中間件並使用默認路由配置
這裏添加mvc中間時使用的是默認的路由配置,默認的路由配置就是跟上圖的同樣。若是url地址欄controller爲空那麼默認爲home,action爲空那麼默認爲index方法,最後一個/id是可空的(帶?表明可空的,正則約束)。固然也能夠自定義一些路由:url
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地址匹配到值還要確保路由參數值在項目中能找到真正的文件夾或文件,這樣整個路由纔算匹配成 spa
2.特性標記路由code
特性標記路由是使用Route特性標記在標記在控制器或者方法上的,Route必須傳入一個參數,該參數爲字符串中間件
如圖:blog
若是Route標記在控制器上,那麼須要傳入參數則爲匹配的控制器名,
若是Route標記在控制器上,那麼須要傳入參數則爲匹配方法名。
若是須要配置相似默認路由配置那樣方法名爲空就默認匹配某個方法時,則不在方法配置或者配置空字符串便可(注意:若是出現多個不配置或者配置空字符串時則沒法匹配,出現異常):
若是想默認使用控制器名稱和方法名稱做爲匹配規則能夠這樣來配置:
也能夠直接在控制器上這樣配置:
[Route("[Controller]/[Action]")]