FluentValidation 是轻量可扩展的 .net 验证库,支持链式规则定义和业务逻辑验证;需通过 NuGet 安装核心包及 ASP.NET Core 集成包;定义继承 AbstractValidator 的验证器类并注册服务即可实现手动或自动验证。

FluentValidation 是一个轻量、可扩展的 .NET 验证库,用链式语法写规则,比 DataAnnotations 更灵活,也更适合业务逻辑验证。
安装 FluentValidation
在项目中通过 NuGet 安装核心包:
- Package Manager 控制台执行:Install-Package FluentValidation
- 或使用 .NET CLI:dotnet add package FluentValidation
如果是 ASP.NET Core 项目,推荐额外安装 FluentValidation.AspNetCore,它能自动集成到 mvc 模型绑定和 API 响应流程中。
定义第一个验证器
为某个实体(比如 User)新建一个继承 AbstractValidator
public class User { public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } } public class UserValidator : AbstractValidator { public UserValidator() { RuleFor(x => x.Name).NotEmpty().WithMessage("姓名不能为空"); RuleFor(x => x.Age).InclusiveBetween(1, 150).WithMessage("年龄必须在 1 到 150 之间"); RuleFor(x => x.Email).EmailAddress().WithMessage("邮箱格式不正确"); } }
在代码中使用验证器
手动验证只需创建验证器实例并调用 Validate 方法:
var user = new User { Name = "", Age = 200, Email = "invalid" }; var validator = new UserValidator(); var result = validator.Validate(user); if (!result.IsValid) { foreach (var failure in result.Errors) { Console.WriteLine($"{failure.PropertyName}: {failure.ErrorMessage}"); } }
结果会输出三条错误信息,对应三个失败规则。
ASP.NET Core 中自动集成
在 Program.cs(.NET 6+)中注册服务并启用自动验证:
builder.Services.AddControllers() .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining()); // 可选:全局关闭 DataAnnotations 验证,只用 FluentValidation builder.Services.Configure(options => { options.ModelValidatorProviders.Clear(); });
这样,当控制器接收 User 参数时,框架会在模型绑定后自动执行 UserValidator,验证失败会返回 400 并附带错误详情。
基本上就这些。规则可组合、可复用、支持异步、支持本地化,进阶用法(如条件验证、自定义验证器、依赖注入)都可以在官方文档中按需查阅。