【.NET框架】—— ASP.NET MVC5路由基礎(五)
阿新 • • 發佈:2020-08-08
1.1.ASP.NET MVC5路由概念及設定
路由是實現資源互動訪問的介面,路由匹配傳入請求,並把這些請求對映到控制器操作,構造傳出的URL,用來響應控制器操作。
路由的分類:
- 傳統路由
- 特性路由
傳統路由:
傳統路由的設定方式,本來就有,在app_Start/RouteConfig.cs中集中設定;
namespace WebApplication1 { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
特性路由:
在控制器類或操作方法中使用宣告式的特性的選項,稱為特性路由。
需要在app_Start/RouteConfig.cs中做設定,修改RegisterRoutes方法:
①設定routes.MapMvcAttributeRoutes();
②對應路由控制器上新增[Route("Home/About")],對應路由Controller名稱,路由方法名稱;
1.2.ASP.NET MVC5特性路由—傳值
特性路由傳參需要在Controller控制器的方法上註解上加上{引數名}
注意:在訪問的時候需要在url上面多加一個name實際傳入的引數,如Home/About/jackson,才能訪問到對應的路由。
多個引數傳遞:/{name}/{name2}…
1.3.ASP.NET MVC5特性路由—控制器路由
可以直接在控制器上加上”Home/{action}”即可訪問到對應的每個控制器方法;
1.4.ASP.NET MVC5特性路由—路由約束
該約束限制id只能是int型別的變數,如果傳入其它型別的string則訪問不到對應的路由,會直接報錯。
1.5.ASP.NET MVC5特性路由—路由預設值
這樣配置就告訴MVC框架當前控制器就是初始化控制器,Index()方法就是初始化路由的檢視。
這裡需要設定一些介面預設的引數模式,詳情請參見部落格:
https://www.cnblogs.com/fumj/p/4887689.html
https://www.cnblogs.com/wningning/archive/2013/03/26/2982079.html
否則會出現 IIS 403報錯的問題: