第五章 模型绑定和数据验证

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; }
}

wechat_2025-07-31_105805_938


posted @ 2025-08-01 09:27  高宏顺  阅读(259)  评论(0)    收藏  举报