当前位置: 首页 > news >正文

网站各类备案搭建网站合同

网站各类备案,搭建网站合同,网络营销比较好的企业,广西建设厅网站专家申请表FluentValidation模块支持链式验证方法调用,也就是说,除了 RuleFor(r > r.UserName).NotEmpty()调用方式之外,还可以将对单个属性的多种验证函数以链式调用方式串接起来,比如UserName属性不能为空,长度在5~10之间&a…

  FluentValidation模块支持链式验证方法调用,也就是说,除了 RuleFor(r => r.UserName).NotEmpty()调用方式之外,还可以将对单个属性的多种验证函数以链式调用方式串接起来,比如UserName属性不能为空,长度在5~10之间,且不能是test,使用FluentValidation模块的链式验证方式及运行效果如下所示:

RuleFor(r => .UserName).NotEmpty().MinimumLength(5).MaximumLength(10).NotEqual("test");

在这里插入图片描述
  调用继承自AbstractValidator类的自定义验证类验证时,一般调用Validate函数获取验证结果及验证错误信息,除此之外,还可以调用ValidateAndThrow函数,当验证失败时直接抛ValidationException异常,后者包含类型为IEnumerable<ValidationFailure>的验证错误信息集合,供程序捕获及处理。

AppUserValidator validationRules = new AppUserValidator();
try
{validationRules.ValidateAndThrow(user);
}
catch (FluentValidation.ValidationException ex)
{MessageBox.Show(ex.Message);
}

在这里插入图片描述

  FluentValidation模块支持两种方式验证复杂类型的属性,方式1是为每种类型定义相应的验证类,并在上一级类型的验证类构造函数中调用SetValidator函数指定类型属性的验证,方式2是在上一级类型的验证类构造函数中按属性层级设置需要验证的规则(官网说明中提到第2种方式要手动增加属性的非null条件验证,否则就不会对下一级属性进行自动验证,但是测试时并没有出现这种情况,可以正常运行AppUser实例对象的验证),这两种方式的使用示例和效果如下所示:

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 AppInfo
{public string AppName { get; set; }public AppUser User { get; set; }
}public class AppInfoalidator : AbstractValidator<AppInfo>
{//方式1public AppInfoalidator() {RuleFor(x=>x.AppName).NotEmpty();RuleFor(x=>x.User).SetValidator(new AppUserValidator());}//方式2public AppInfoalidator() {RuleFor(x=>x.AppName).NotEmpty();RuleFor(x=>x.User.UserName).NotEmpty().MinimumLength(5).MaximumLength(10).NotEqual("test");    }
}
public class AppUserValidator:AbstractValidator<AppUser>
{public AppUserValidator(){RuleFor(r => r.UserName).NotEmpty().MinimumLength(5).MaximumLength(10).NotEqual("test");}
}

在这里插入图片描述

  针对集合类型的属性,FluentValidation模块提供了RuleForEach函数验证集合属性,针对简单类型的集合属性,可以直接调用RuleForEach对每个元素进行验证,如下所示。

public class AppInfo
{public string AppName { get; set; }public List<string> Roles { get; set; }
}public class AppInfoalidator : AbstractValidator<AppInfo>
{public AppInfoalidator() {RuleFor(x=>x.AppName).NotEmpty();RuleForEach(x => x.Roles).NotEmpty().WithMessage("第{CollectionIndex}个集合元素不能为空").MinimumLength(3).WithMessage("第{CollectionIndex}个集合元素长度不能小于3");}
}AppInfo app = new AppInfo();
app.Roles = new List<string>();
app.Roles.Add(string.Empty);
app.Roles.Add("办公室主任");
app.Roles.Add("职员");AppInfoalidator appValidator=new AppInfoalidator();
FluentValidation.Results.ValidationResult result =appValidator.Validate(app);
if(!result.IsValid)
{MessageBox.Show(result.ToString());
}

在这里插入图片描述

  针对复杂类型的集合属性,类似于上面复杂类型的属性验证方式,既可以调用RuleForEach和SetValidator函数设置每个元素的验证类,也可以调用 RuleForEach和ChildRules函数直接设置每个元素的验证方式,这两种方式的使用示例和效果如下所示:

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 AppInfo
{public string AppName { get; set; }public List<string> Roles { get; set; }public List<AppUser> Users { get; set; }
}public class AppInfoalidator : AbstractValidator<AppInfo>
{//方式1public AppInfoalidator() {RuleFor(x=>x.AppName).NotEmpty();RuleForEach(x => x.Roles).NotEmpty().WithMessage("角色属性第{CollectionIndex}个集合元素不能为空").MinimumLength(3).WithMessage("角色属性第{CollectionIndex}个集合元素长度不能小于3");RuleForEach(x => x.Users).SetValidator(new AppUserValidator());}//方式2public AppInfoalidator() {RuleFor(x=>x.AppName).NotEmpty();RuleForEach(x => x.Roles).NotEmpty().WithMessage("角色属性第{CollectionIndex}个集合元素不能为空").MinimumLength(3).WithMessage("角色属性第{CollectionIndex}个集合元素长度不能小于3");RuleForEach(x => x.Users).ChildRules(r =>{r.RuleFor(r => r.UserName).NotEmpty().MinimumLength(5).WithMessage("用户属性第{CollectionIndex}个集合元素长度不能小于5").MaximumLength(10).NotEqual("test").WithMessage("用户属性第{CollectionIndex}个集合元素值不能等于test");});}
}
public class AppUserValidator:AbstractValidator<AppUser>
{public AppUserValidator(){RuleFor(r => r.UserName).NotEmpty().MinimumLength(5).WithMessage("用户属性第{CollectionIndex}个集合元素长度不能小于5").MaximumLength(10).NotEqual("test").WithMessage("用户属性第{CollectionIndex}个集合元素值不能等于test");}
}

在这里插入图片描述

  
  

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

http://www.yayakq.cn/news/296106/

相关文章:

  • 深圳网站设计|优选灵点网络成都网站建设公司招聘
  • 政务服务网站建设标准vi设计网站有哪些
  • 做携程怎样的网站永定区建设局网站
  • 做淘宝网站需要东平县住房和城乡建设局网站
  • 企业网站建设程序免费程序网站
  • 楚雄州住房和城乡建设局网站方太官方网站的建设情况
  • 网站建设督查工作主持词济南手机网站开发公司电话
  • 无为县建设局网站做一个app需要多少费用
  • 站群cms光辉网站建设公司
  • 网站正能量破解版下载大全安装网络策划公司
  • 做最好的win7系统下载网站wordpress发邮件慢
  • 吉林省长春网站建设电子商务网站的建设心得
  • 网站流量平台网站不收录
  • 搜索引擎简称seo青岛官网优化推广
  • 凤岗镇仿做网站河南 网站建设
  • 济南公司网站建设公司哪家好搜索引擎优化实训心得
  • 最新网站推广哪家好大连h5网站开发
  • 有什么网站可以做六级题目嘛少儿编程加盟学校
  • 备案号怎么添加到网站网站文明专栏建设
  • 案例学习网站建设方案wordpress主题模板视频网站模板
  • 不良网站代码怎么查雅虎搜索
  • 做网站建设注册商标是多少类开淘宝店铺怎么运营推广
  • 研究网站平台建设工作动态wordpress获取当前页面链接
  • 网站 做实名认证nginx wordpress 伪静态
  • 腾讯云学生怎么做网站的网站内容设计主要包括
  • 文昌市建设局网站在线网站建设系统
  • PHP网站开发都需要学什么卖鱼的亲戚要我帮忙做网站
  • 网站建设倒计时代码wordpress图片二级域名
  • 在线旅游网站开发分析报告世界经理人网站手机版
  • 食品包装袋设计天津网站建设优化