基于.NET开发的验证框架 FluentValidation

一、介绍

FluentValidation 是一个基于 .NET 开发的验证框架,开源免费,而且优雅,支持链式操作,易于理解,功能完善,还是可与 MVC5、WebApi2 和 ASP.NET CORE 深度集成,组件内提供十几种常用验证器,可扩展性好,支持自定义验证器,支持本地化多语言。

要使用验证框架, 需要在项目中添加对 FluentValidation.dll 的引用,支持 netstandard2.0 库和 .NET4.5 平台,支持.NET Core 平台,最简单的方法是使用 NuGet 包管理器引用组件。

大家可以在NuGet中直接安装,如下图:

二、使用

1、 基础类

/// <summary>
/// 返回结果类
/// </summary>
public class Result {
	/// <summary>
	/// 编码
	/// </summary>
	public int code { get; set; }
	/// <summary>
	/// 消息
	/// </summary>
	public string message { get; set; }
	/// <summary>
	/// 返回值
	/// </summary>
	public object result { get; set; }

	/// <summary>
	/// 时间戳
	/// </summary>
	public long timestamp {
		get {
			return ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000);
		}
	}
}

/// <summary>
/// 验证类
/// </summary>
public class AddAppraiseValidator : AbstractValidator<AddAppraiseParam>
{ 
	/// <summary>
	/// 验证参数
	/// </summary>
	public AddAppraiseValidator()
	{
		//级联模式
		ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure;

		//不为空
		RuleFor(x => x.MeetingID).GreaterThan(0).WithMessage("会议ID不能为空");
		RuleFor(x => x.Declarant).NotEmpty().WithMessage("申报人不能为空");
		RuleFor(x => x.EType).NotEmpty().WithMessage("评价类型不能为空");
	}
}

/// <summary>
/// 添加评价
/// </summary>
public class AddAppraiseParam
{
	/// <summary>
	/// 会议ID
	/// </summary>
	public int MeetingID { get; set; }
	/// <summary>
	/// 评价类型
	/// </summary>
	public string EType { get; set; }
	/// <summary>
	/// 评价信息
	/// </summary>
	public List<string> Evaluation { get; set; }
	/// <summary>
	/// 申报人
	/// </summary>
	public string Declarant { get; set; }
}

2、验证调用方法

Result result = new Result();

//验证参数
var validator = new Models.AddAppraiseValidator();
ValidationResult VResults = validator.Validate(param);
bool ValidationSucc = VResults.IsValid;
if (!ValidationSucc)
{
	IList<ValidationFailure> failures = VResults.Errors;
	result.code = 1001;
	result.message = "参数错误!";
	result.result = failures;
	return Json(result);
}
原创文章 79 获赞 56 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_23009105/article/details/100115140