概述
.NET MVC Routing
Routing to controller actions in ASP.NET Core | Microsoft Docs
分两种
-
路由是使用UseRouting和UseEndpoints中间件配置的。
-
调用MapControllers来映射属性路由控制器。 调用MapControllerRoute或MapAreaControllerRoute,以映射传统路由控制器和属性路由控制器。
-
通过添加对MapControllerRoute和MapAreaControllerRoute 的更多调用,可以在内部添加多个[常规路由]
-
根据调用顺序自动为其端点分配顺序值
1》 传统路由(convertional routing)
一般和控制器和视图结合实用
默认路由,匹配随意的 controller 和 action =》 对应的路劲 /controller/action(视图名)/id
app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); {controller=Home}定义Home为默认值controller。 {action=Index}定义Index为默认值action。 ?在字符{id?}定义id为可选的。 //便捷写法 app.MapDefaultControllerRoute();
2》 属性路由(Attribute routing)
-
传统的默认路由更简洁地处理路由。然而,属性路由允许并需要精确控制哪些路由模板适用于每个[动作]
REST APIs
public class HomeController : Controller { //下面路由运行URL路径为: /,/Home,/Home/Index,或/Home/Index/3 [Route("")] [Route("Home")] [Route("Home/Index")] [Route("Home/Index/{id?}")] public IActionResult Index(int? id) { return ControllerContext.MyDisplayRouteInfo(id); } [Route("Home/About")] [Route("Home/About/{id?}")] public IActionResult About(int? id) { return ControllerContext.MyDisplayRouteInfo(id); } }
属性路由的令牌替换,以达到用控制器名 + action 名匹配 url 的目的
-
属性路由按具体程度来匹配,具体程度越高匹配度越高优先级越高
public class HomeController : Controller { [Route("")] [Route("Home")] [Route("[controller]/[action]")] public IActionResult Index() { return ControllerContext.MyDisplayRouteInfo(); } [Route("[controller]/[action]")] public IActionResult About() { return ControllerContext.MyDisplayRouteInfo(); } }
属性路由支持定义多个到达同一动作的路由
[Route("Store")] [Route("[controller]")] public class Products6Controller : Controller { [HttpPost("Buy")] // Matches 'Products6/Buy' and 'Store/Buy' [HttpPost("Checkout")] // Matches 'Products6/Checkout' and 'Store/Checkout' public IActionResult Buy() { return ControllerContext.MyDisplayRouteInfo(); } }
3》 MVC 提供的 URL 生成功能
IUrlHelper接口是MVC和路由URL生成之间基础设施的基本元素
4》按路由生成 URL
IUrlHelper
提供了Url.RouteUrl系列方法
最后
以上就是糟糕香水为你收集整理的.Net mvc 路由学习笔记的全部内容,希望文章能够帮你解决.Net mvc 路由学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复