C#如何使用FluentValidation C# FluentValidation验证库入门

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

c#如何使用fluentvalidation c# fluentvalidation验证库入门

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 方法:

紫东太初

紫东太初

中科院和武汉AI研究院推出的新一代大模型

下载

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 并附带错误详情。

基本上就这些。规则可组合、可复用、支持异步、支持本地化,进阶用法(如条件验证、自定义验证器、依赖注入)都可以在官方文档中按需查阅。

https://www.php.cn/faq/2027298.html

发表回复

Your email address will not be published. Required fields are marked *