- 增加一个Contrller,命名为BaseController, 并继承Controller
- 在BaseController类上增加属性[ApiController]
原理
mvc控制器。一般继承的是 Controller (Controller 里面包含视图),对 action 方法参数 模型绑定的时候,参数的推断来源默认是 从表单中获取 相当于默认有 [FromFrom] 这个特性加在参数旁边
webapi,继承 ControllerBase(里面没有关于视图的方法),webapi 一般加个特性 [ApiController] ,如果加了这个特性,对 action 方法参数 模型绑定的时候,参数的推断来源默认是 从主体中获取 相当于默认有 [FromBody] 这个特性加在参数旁边
如果没有 [ApiController] 属性或诸如 [FromQuery] 的绑定源属性,ASP.NET Core 运行时会尝试使用复杂对象模型绑定器。 复杂对象模型绑定器按已定义顺序从值提供程序拉取数据。
| 特性 | 绑定源 |
[FromBody] | 请求正文 |
[FromForm] | 请求正文中的表单数据 |
[FromHeader] | 请求标头 |
[FromQuery] | 请求查询字符串参数 |
[FromRoute] | 当前请求中的路由数据 |
[FromServices] | 作为操作参数插入的请求服务 |
[ApiController] 属性将推理规则应用于操作参数的默认数据源。 借助这些规则,无需通过将属性应用于操作参数来手动识别绑定源。 绑定源推理规则的行为如下:
[FromBody] 针对复杂类型参数进行推断。 [FromBody] 不适用于具有特殊含义的任何复杂的内置类型,如 IFormCollection 和 CancellationToken。 绑定源推理代码将忽略这些特殊类型。
[FromForm] 针对 IFormFile 和 IFormFileCollection 类型的操作参数进行推断。 该特性不针对任何简单类型或用户定义类型进行推断。
[FromRoute] 针对与路由模板中的参数相匹配的任何操作参数名称进行推断。 当多个路由与一个操作参数匹配时,任何路由值都视为 [FromRoute]。
[FromQuery] 针对任何其他操作参数进行推断。
官方文档
留待后查,同时方便他人