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

即墨做网站的高端html5网站建设织梦模板

即墨做网站的,高端html5网站建设织梦模板,桂阳网站制作公司,定西市小企业网站建设FluentValidation 是一个用于 .NET 的开源验证库#xff0c;它提供了一种流畅的接口和强类型验证规则#xff0c;使得验证逻辑表达得更加清晰和简洁。#xff08;Apache-2.0#xff09; FluentValidation 的主要作用包括#xff1a; 提高代码可读性#xff1a;通过使用 F… FluentValidation 是一个用于 .NET 的开源验证库它提供了一种流畅的接口和强类型验证规则使得验证逻辑表达得更加清晰和简洁。Apache-2.0 FluentValidation 的主要作用包括 提高代码可读性通过使用 Fluent 接口和 lambda 表达式FluentValidation 能够让验证逻辑更容易被阅读和理解。简化验证逻辑编写它允许开发者以声明式的方式构建复杂的验证规则这样可以减少编写重复性验证代码的工作量。易于维护由于验证规则是强类型的这使得维护和重构变得更加容易因为编译器可以帮助检查类型安全。支持 .NET 8FluentValidation 更新迅速与 .NET 8 保持同步确保了在新平台上的可用性。自定义错误消息FluentValidation 允许开发者为每个验证规则定义自定义的错误消息这样可以提供更具体的错误反馈给最终用户。扩展性强如果默认提供的验证规则不满足需求开发者可以创建自定义的验证器来应对特定的业务逻辑。集成灵活FluentValidation 可以轻松地集成到现有的 .NET Core Web API 或 MVC 项目中与模型绑定和数据注解无缝协作。 总的来说FluentValidation 是一个功能强大且易于使用的验证库它能够帮助 .NET 开发者构建健壮的应用程序同时保持良好的代码质量和可维护性。 前边我们做了系统登录注册的简单接口对于参数的处理都是通过代码去编写的如下 //验证 if (string.IsNullOrWhiteSpace(para.UserName) || string.IsNullOrWhiteSpace(para.PassWord)) {return ApiResultHelper.Error(请输入账号或密码); } 如果其他地方也需要类似的判断处理则需要对代码进行复制复制的地方多了后续维护的成本也会加大  所以我们希望能有一个统一的处理方式来规划这些值 于是便有了对FluentValidation验证体系的使用了。 五一结束了也祝各位工作顺利升职加薪 进入正题 1、安装nuget包FluentValidation  2、 配置验证规则。 我这里是把验证模式放在Model层创建Validation文件夹处理的也可以放在入参那边的模型下边。 例子 /// summary /// 用户登录 入参 校验 /// /summary public class LoginUserValidator : AbstractValidatorLoginUserParameters {public LoginUserValidator(){RuleFor(para para.UserName).NotEmpty().WithMessage(【用户名】不能为空);RuleFor(para para.PassWord).NotEmpty().WithMessage(【密码】不能为空);} }/// summary /// 用户注册 入参 校验 /// /summary public class RegisterUserValidator : AbstractValidatorRegisterUserParameters {public RegisterUserValidator(){//1.不为空string notEmpty 不能为空;RuleFor(para para.UserName).NotEmpty().WithMessage(【用户名】 notEmpty);RuleFor(para para.PassWord).NotEmpty().WithMessage(【密码】 notEmpty);RuleFor(para para.Email).NotEmpty().WithMessage(【邮箱】 notEmpty);RuleFor(para para.AuthCode).NotEmpty().WithMessage(【验证码】 notEmpty);//2.数据库存储长度限制//ps:可用sugar特性或查询数据库配置统一处理吧string notLength 长度有误;RuleFor(para para.UserName).Length(1, 25).WithMessage(【用户名】 notLength);RuleFor(para para.PassWord).Length(6, 18).WithMessage(【密码】 notLength);RuleFor(para para.Email).Length(6, 30).WithMessage(【邮箱】 notLength);//不建议限制RuleFor(user user.AuthCode).Length(6, 8).WithMessage(【验证码】 notLength);//3.格式正则string notMatches 格式不正确;RuleFor(user user.Email).Matches(^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$).WithMessage(【邮箱】 notMatches);//可与上边拼接一起}} 这里一个是简单方式的一个是验证方式较多的。 如有其他需要可自行百度或搜索其他方式方法。 3、注入服务 builder.Services.AddTransientIValidatorLoginUserParameters, LoginUserValidator(); builder.Services.AddTransientIValidatorRegisterUserParameters, RegisterUserValidator(); 4、使用。 4.1、控制器层注入 private readonly ILoggerUsersController _logger;private readonly IUsersService _usersService;//参数验证private readonly IValidatorLoginUserParameters _loginUserParametersValidator;private readonly IValidatorRegisterUserParameters _registerUserParametersValidator;/// summary/// 构造函数/// /summary/// param namelogger/parampublic UsersController(ILoggerUsersController logger, IUsersService usersService,IValidatorLoginUserParameters loginUserParametersValidator,IValidatorRegisterUserParameters registerUserParametersValidator){_logger logger;_usersService usersService;_loginUserParametersValidator loginUserParametersValidator;_registerUserParametersValidator registerUserParametersValidator;} 4.2、方法Action中使用 var validationResult _loginUserParametersValidator.Validate(para);if (!validationResult.IsValid){//return BadRequest(validationResult.Errors);var errs validationResult.Errors;var errsStr string.Empty;var index 1;validationResult.Errors.ForEach(t {errsStr errsStr index.ToString() 、 t.ToString() ;index ;});return ApiResultHelper.Error(【参数验证失败】 errsStr);} 5、测试 5.1、如图。无账号 这里把所有有误的都加上来了 然后我们通过信息查看其实为空的是否必然长度是不对的也就没必要体现出来 所以在注入后再添加代码 //1设置模型类的CascadeMode当模型的第一个验证失败后续验证不执行。 ValidatorOptions.Global.DefaultClassLevelCascadeMode CascadeMode.Stop; //2设置模型字段的CascadeMode当字段的第一个验证失败后续验证不执行。 ValidatorOptions.Global.DefaultRuleLevelCascadeMode CascadeMode.Stop; 这就很符合我们自己写逻辑的规则方式了。         继续测试的效果也就是第一个错误提示了。 最后在验证那一串循环代码可以在封装一下不然也是每次写这么多重复代码。 6、其他 6.1、在查询该功能实现及其他处理可参考文章 fluentvalidation - 简书 https://www.cnblogs.com/wenthing/p/18006465  6.2、拓展自定义一个处理方式。
http://www.dnsts.com.cn/news/30618.html

相关文章:

  • wordpress外贸网站模板图片幻灯片插件 wordpress
  • 网站的工作简报怎么做西安加盟代理网站建设
  • c 转网站开发建站房的公司
  • c php做网站对比曲阳网站建设
  • 济南商城网站建设婚纱网网站建设目的及功能定位
  • 寿县网站建设网站手机端首页用什么软件做
  • 凡科建站快车官网网站开发收获
  • 网站建设 试题精品网站建设费用 都来磐石网络
  • joomla 网站 html 空世界工厂网优质货源
  • 建站之星备案长清区网站建设宣传
  • 可以做网站的软件上传歌曲南宁网站外包
  • 郑州高端网站制作团队手机版的网站开发
  • 焦作网站制作-焦作网站建设-焦作网络公司-维科网络一般网站建设大概需要多少钱
  • 免费看电视剧的网站2021erp软件开发定制
  • 网站连通率软件开发下载
  • 网站域名查询ip地址做网站要先买域名吗
  • 百度如何才能搜索到你的网站百度优化师
  • 网站别人做的我自己怎么续费四川广安爱众app同城
  • win7 网站配置网站到底怎么做出来的
  • 网页安全站点设置wordpress 中文论坛
  • 电子商务网站建设成果ppy青岛房产网上备案查询
  • 如何开通自己的网站旅游手机网站模板
  • 论坛网站推广方案网络哪个公司便宜又好
  • 建设免费网站微信服务号菜单链接网站怎么做的
  • 敦煌网站建设西安企业建站价格
  • 数据分析网站html模板下载搜索引擎有哪些种类
  • 河北网站建设与管理网站html动态效果代码
  • 射阳建设局网站厦门it做网站最强
  • 网站内容如何编辑软件app开发技术
  • dw做的网站怎么去掉七米网站建设