第五章 模型绑定和数据验证
5.1 模型绑定基础
什么是模型绑定
模型绑定是ASP.NET Core的一个核心功能,它自动将HTTP请求数据(路由参数、查询字符串、表单数据、JSON等)映射到动作方法的参数或模型对象。模型绑定简化了从HTTP请求中提取数据的过程,让开发者能够直接使用强类型对象而非手动解析请求。
绑定源特性
ASP.NET Core提供了特性来明确指定数据应该从哪个源绑定:
特性 | 数据源 | 示例 |
---|---|---|
[FromRoute] | 路由参数 | /api/products/{id} |
[FromQuery] | 查询字符串 | /api/products?category=electronics |
[FromBody] | 请求正文 | HTTP POST/PUT/PATCH的JSON或XML数据 |
[FromForm] | 表单数据 | 多部分表单数据或x-www-form-urlencoded |
[FromHeader] | HTTP头部 | Authorization: Bearer token |
[FromServices] | 服务容器(依赖注入) | 注入的服务 |
5.2 模型验证
内置验证特性
ASP.NET Core提供了一组内置的验证特性,可用于验证模型:
特性 | 描述 | 示例 |
---|---|---|
[Required] | 属性不能为null | [Required] |
[StringLength] | 字符串长度限制 | [StringLength(50, MinimumLength = 3)] |
[Range] | 数值范围限制 | [Range(1, 100)] |
[RegularExpression] | 正则表达式匹配 | [RegularExpression(@"^[A-Z]{2}\d{4}$")] |
[EmailAddress] | 电子邮件格式 | [EmailAddress] |
[Phone] | 电话号码格式 | [Phone] |
[Url] | URL格式 | [Url] |
例如,为产品模型添加验证:
public class Product
{
public int Id { get; set; }
[Required]
[StringLength(100, MinimumLength = 3)]
public string Name { get; set; }
[Required]
[StringLength(500)]
public string Description { get; set; }
[Range(0.01, 10000)]
public decimal Price { get; set; }
[Range(0, 1000)]
public int StockQuantity { get; set; }
[Url]
public string ImageUrl { get; set; }
}