ASP.NET Core 6.0 基于模型验证的数据验证

AspNetCore 模型验证这一块相关的源码,主要是使用一个默认过滤器(为 ModelStateInvalidFilter,由 ModelStateInvalidFilterFactory生成),在经过默认过滤器,判定是否模型验证不通过,若验证不通过,将会调用一个默认工厂 InvalidModelStateResponseFactory(由 ApiBehaviorOptionsSetup 对 ApiBehaviorOptions 进行配置,实际上是一个 Func),来产生模型验证的返回结果(返回一个 BadRequestObjectResult 或 ObjectResult)。

简单描述一下数据流向:

用户请求 >> ModelStateInvalidFilter >> InvalidModelStateResponseFactory >> BadRequestObjectResult

其中,最主要的控制是 ApiBehaviorOptions 的 SuppressModelStateInvalidFilter 和 InvalidModelStateResponseFactory 属性。这两个属性,前者控制默认过滤器是否启用,后者被默认过滤器调用生成模型验证的结果。

 

内置的验证属性

[ValidateNever]:指示属性或参数应从验证中排除。
[CreditCard]:验证属性是否具有信用卡格式。
[Compare]:验证模型中的两个属性是否匹配。
[EmailAddress]:验证属性是否具有电子邮件格式。
[Phone]:验证属性是否具有电话号码格式。
[Range]:验证属性值是否在指定的范围内。
[RegularExpression]:验证属性值是否与指定的正则表达式匹配。
[Required]:验证字段是否不为 null。
[StringLength]:验证字符串属性值是否不超过指定长度限制。
[URL]:验证属性是否具有 URL 格式。
[Remote]:通过在服务器上调用操作方法来验证客户端上的输入。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注