在.Net6 中使用 FluentValidation

发布时间 2023-04-07 15:35:46作者: 开心的菜鸟程序猿

本文仅演示 FluentValidation 的手动调用验证的方式,不涉及自动验证的方式

1、引用Nuget包:FluentValidation.AspNetCore;

2、依赖注入:

builder.Services.AddValidatorsFromAssembly(Assembly.GetExecutingAssembly());
Assembly.GetExecutingAssembly()指定自定义验证器所在的程序集(此处是当前程序集);

3、自定义验证器:继承自 AbstractValidator<T>,其中T表示要验证的模型;然后在构造函数中用FluentAPI的方式设置校验规则进行模型验证;也可以在构造函数中注入其它的外部服务进行验证(如注入DBContext 查询数据库判断手机号是否已存在);

1   public class UserValidator : AbstractValidator<AddUserForm>
2   {
3     public UserValidator()
4     {
5       RuleFor(u => u.PhoneNumber).NotEmpty().Matches("/^1d{9}$/").WithMessage("无效的手机号码");
6     }
7   }

4、手动调用:(官方不推荐自动验证的方式)

通过构造函数注入的方式,调用自定义的验证器类;调用IsValid方法获取验证是否通过,错误信息存储在 ValidationResult.Errors 中,可以进行遍历输出所有的错误提示或者调用 ValidationResult的ToString() 扩展方法一次性全部输出错误提示(默认使用换行分隔每个错误提示,也可以自己传入分隔符,例如使用逗号分隔 ValidationResult.ToString(","));

 

 

 

 

 

 参考资料:ASP.NET Core — FluentValidation documentation