• 学习.NET验证模块FluentValidation的基本用法


      开源博客项目Blog .NET中使用FluentValidation验证部分对象实例的属性值,本文学习FluentValidation模块的基本用法,后续再学习Blog .NET项目FluentValidation模块的用法。
      FluentValidation模块支持Linq 表达式,同时支持链式操作;既可以对简单类型的属性进行验证,也支持验证复杂类型属性;既能使用FluentValidation模块内置的验证类,也支持自定义验证方式。
      假设需要对类型A中的部分属性进行验证,定义验证类AValidator,继承自AbstractValidator,同时在AValidator的构造函数中调用RuleFor函数设置验证规则,使用lambda表达式指定要验证的属性,同时调用内置的验证函数进行属性验证,主要包括以下函数:

    序号函数名用途
    1NotNull属性值不能为null
    2NotEmpty属性值不能为null、empty或者空白,如果属性为集合,则集合必须有成员
    3NotEqual属性值不能等于指定值
    4Equal属性值必须等于指定值
    5Length字符串属性长度必须位于指定范围之内
    6MaximumLength字符串属性长度不能大于指定值
    7MinimumLength字符串属性长度不能小于指定值
    8LessThan属性值必须小于指定值
    9LessThanOrEqualTo属性值必须小于等于指定值
    10GreaterThan属性值必须大于指定值
    11GreaterThanOrEqualTo属性值必须大于等于指定值
    12Must自定义属性验证方式
    13Matches使用正则表达式验证属性值
    14EmailAddress属性值必须为电子邮箱格式
    15CreditCard属性值必须为信用卡格式
    16IsInEnum检查属性值是否为指定枚举类型中的值
    17IsEnumName检查字符串属性是否为指定枚举类型中的名词
    18Empty属性值必须为空,或者类型的默认值,或者如果属性为集合,则集合不包含成员
    19Null属性值须为null
    20ExclusiveBetween属性值必须在指定的范围内 ,不包含边界值
    21InclusiveBetween属性值必须在指定的范围内,包含边界值
    22PrecisionScale检查decimal属性值的精度是否满足要求

      新建Winform项目测试FluentValidation的基本用法,在Nuget包管理器中搜索并安装FluentValidation。
    在这里插入图片描述
      定义用户信息类及其验证类,如下所示:

    public class AppUser
    {
        public string UserName { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
        public string Email { get; set; }
    }
    
    public class AppUserValidator:AbstractValidator<AppUser>
    {
        public AppUserValidator()
        {
            RuleFor(r => r.UserName).NotEmpty().WithMessage("姓名不能为空");
            RuleFor(r => r.Age).GreaterThan(10).WithMessage("年龄必须超过10岁");
            RuleFor(r => r.Email).EmailAddress();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

      使用以下代码进行验证,验证结果如下图所示:

    AppUser user = new AppUser();
    user.UserName = txtName.Text;
    user.Age=Convert.ToInt32(txtAge.Text);
    user.Email = txtEmail.Text;
    user.Sex = comboSex.Text;
    
    AppUserValidator validationRules = new AppUserValidator();
    FluentValidation.Results.ValidationResult result= validationRules.Validate(user);
    if(!result.IsValid)
    {
        MessageBox.Show(result.ToString());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    参考文献:
    [1]https://docs.fluentvalidation.net/en/latest/index.html#

  • 相关阅读:
    画一个 “月饼” 陪我过中秋,玩转炫彩 “月饼” 之 基本测试
    【图解】JavaScript加法问题
    前端面试题: js中对比两个对象的值是否相等? for..in 和 for...of的区别?
    重新理解 RocketMQ Commit Log 存储协议
    uniapp 的video播放如何实现小窗功能
    mysql与oracle分页的有什么区别
    Ubuntu 17.10的超震撼声音权限
    数据结构和算法八股与手撕
    阿里云10M带宽服务器价格、下载和上传速度限制说明
    拓世法宝AI智能直播一体机,快速搭建品牌矩阵,开启扩张新里程
  • 原文地址:https://blog.csdn.net/gc_2299/article/details/134452594