Jack N @ GitHub

Full stack engineer, focus on: Angular/React, node.js/.Net

0%

ASP.NET Core MVC 入门到精通 - 2. 路由

1. ASP.NET Core MVC 概述

ASP.NET Core MVC 框架是轻量级、开源、高度可测试的演示框架,并针对 ASP.NET Core 进行了优化。

2. ASP.NET Core MVC路由

ASP.NET Core MVC 建立在 ASP.NET Core 的路由之上,是一个功能强大的 URL 映射组件,可用于生成具有易于理解和可搜索 URL 的应用程序。

MVC 中的路由包含下面2中方式

  1. 基于约定的路由
  2. 属性路由

2.1. 注册

所有 ASP.NET Core 模板都包括生成的代码中的路由。 路由在 Startup.Configure 中的中间件管道中进行注册。

1
2
3
4
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
}

2.2. 基于约定的路由

基于约定的路由,可以全局定义应用程序接受的 URL 格式,并说明每种格式如何映射到给定控制器上的特定操作方法。 接收传入请求时,路由引擎分析 URL 并将其匹配到定义的 URL 格式之一,然后调用关联的控制器操作方法。

Configre 方法中,定义约定路由:

1
2
3
4
5
6
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});

{controller=Home}/{action=Index}/{id?}, 含义是默认Controller是Home,默认action为Controller中的Index方法(Action)。

2.3. 属性路由

属性路由,可以通过用定义应用程序路由的属性修饰控制器和操作来指定路由信息。 这意味着路由定义位于与之相关联的控制器和操作旁。

1
2
3
4
5
6
7
8
9
[Route("api/[controller]")]
public class ProductsController : Controller
{
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
// url等同于 api/Products/{id}
}
}