编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

推荐一个 .NET 最好用的规则验证库

wxchong 2024-07-22 23:01:38 开源技术 11 ℃ 0 评论


什么是 FluentValidation?




FluentValidation 是一个开源的 .NET 库,用于验证对象的属性。它旨在提供一种简单而强大的方式来定义和执行验证规则,使得验证逻辑的编写和维护变得更加直观和容易。

与传统的数据注解相比,FluentValidation 提供了更灵活、可扩展的验证规则定义方式。它的设计理念是通过一种流畅的、易于理解的语法来描述验证规则,从而提高代码的可读性和可维护性。

安装和配置

首先,您需要通过 NuGet 安装 FluentValidation 库。在 Visual Studio 中,可以通过 NuGet 包管理器控制台执行以下命令:

Install-Package FluentValidation



使用示例




非空验证:

RuleFor(x => x.FirstName).NotEmpty().WithMessage("名字不能为空");

范围验证:

RuleFor(x => x.Age).InclusiveBetween(18, 99).WithMessage("年龄必须在18到99岁之间");

字符串长度验证:

RuleFor(x => x.UserName).Length(3, 15).WithMessage("用户名长度必须在3到15之间");

正则表达式验证:

RuleFor(x => x.Email).Matches(@"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
.WithMessage("请输入有效的邮箱地址");

高级用法:

自定义验证规则:

RuleFor(x => x.Discount).Custom((value, context) =>
{
if (value < 0 || value > 100)
{
context.AddFailure("折扣必须在0到100之间");
}
});

条件验证:

When(x => x.IsVip, () =>
{
RuleFor(x => x.SpecialOffer).NotEmpty().WithMessage("VIP会员必须有特别优惠");
});

异步验证:

RuleForAsync(x => x.UserName).MustAsync(async (username, cancellation) =>
{
var isUnique = await _userService.IsUserNameUniqueAsync(username);
return isUnique;
}).WithMessage("用户名已存在");

自定义错误消息:

RuleFor(x => x.ZipCode).NotEmpty().WithMessage("邮政编码不能为空")
.Matches(@"^\d{5}$").WithMessage("请输入有效的5位数字邮政编码");

FluentValidation 是一个优雅而功能丰富的验证库,它在提高代码可读性和可维护性的同时,保持了高度的灵活性。它不仅适用于简单的验证需求,还能够处理复杂的业务规则,使开发人员能够更轻松地确保数据的有效性。













项目地址



https://github.com/FluentValidation/FluentValidation



分享
点收藏

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表