我是靠谱客的博主 糟糕香水,这篇文章主要介绍.Net mvc 路由学习笔记,现在分享给大家,希望可以做个参考。

.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

复制代码
1
2
3
4
5
6
7
8
9
10
11
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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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 的目的

  • 属性路由按具体程度来匹配,具体程度越高匹配度越高优先级越高

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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();   } }

属性路由支持定义多个到达同一动作的路由

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部