🍀介绍
在C#中,特别是在ASP.NET Core中,模型绑定是一个将HTTP请求中的数据映射到C#对象的过程。它使得开发者能够方便地从请求中提取数据,而无需手动解析请求体、查询字符串、路由数据等。ASP.NET Core提供了多种特性(Attributes)来指定模型绑定的来源。以下是一些常用的模型绑定特性及其区别:
[FromRoute]
- 适用于:路由模板中的参数。
- 描述:从路由模板中绑定数据到模型对象。
- 示例:对于路由模板
api/items/{id}
,你可以使用[FromRoute]
来绑定id
参数。
[FromQuery]
- 适用于:查询字符串中的数据。
- 描述:从URL的查询字符串中绑定数据到模型对象。
- 示例:对于URL
https://example.com/api/items?page=1&size=10
,你可以使用[FromQuery]
来绑定page
和size
参数。
[FromHeader]
- 适用于:HTTP请求头中的数据。
- 描述:从HTTP请求头中绑定数据到模型对象或单个属性。
- 示例:可以用来绑定如
Authorization
、Content-Type
等请求头。
[FromBody]
- 适用于:POST、PUT等请求的请求体数据。
- 描述:将请求体中的数据绑定到模型对象。通常用于JSON或XML格式的数据。
- 注意事项:在一个动作方法中,通常只能有一个参数使用
[FromBody]
,因为请求体只能被读取一次。
[FromForm]
- 适用于:表单提交的数据。。
- 描述:在ASP.NET Core Web API中,
[FromForm]
特性用于从HTTP请求的表单数据中绑定数据到模型对象。这通常用于处理multipart/form-data
类型的请求,比如文件上传同时携带其他表单字段的场景。 - 示例:假设你有一个Web API端点,用于接收用户上传的图片以及其他相关信息,你可以使用
[FromForm]
来绑定表单数据。
[FromServices]
- 适用于:依赖注入的服务。
- 描述:不是直接从请求中绑定数据,而是从依赖注入容器中获取服务实例。
- 示例:常用于注入如
ILogger
、DbContext
等服务。
[ModelBinder]
- 适用于:自定义模型绑定逻辑。
- 描述:允许你创建自定义的模型绑定逻辑。你可以通过实现
IModelBinder
接口或继承IModelBinderProvider
来创建自定义的模型绑定器。
🍀演示
下面我们对上面提到的模型绑定特性对常用的几个进行使用演示
因为在Get请求中不能有body,因此我们先在get方法中演