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 并附带错误详情。
基本上就这些。规则可组合、可复用、支持异步、支持本地化,进阶用法(如条件验证、自定义验证器、依赖注入)都可以在官方文档中按需查阅。










