宝哥软件园

ASP .净MVC5验证系列之流畅验证

编辑:宝哥软件园 来源:互联网 时间:2021-09-08

前面两篇文章学习到了,服务端验证,和客户端的验证,但大家有没有发现,这两种验证各自都有弊端,服务器端的验证,验证的逻辑和代码的逻辑混合在一起了,如果代码量很大的话,以后维护扩展起来,就不是很方便。而客户端的验证,必须要启用客户端验证,也就是在配置文件中配置相应的节点,并且还要引入Jquery插件。如果人为的在浏览器上,禁用了射流研究…脚本,那么客户端验证就不起作用了,所以在这里,我将继续学习另外一个验证,也就是流畅的验证。

流畅验证是一个开源的。网类库,它使用流利的接口和希腊字母的第11个表达式,来为实体做验证流畅的验证是专门为实体做验证使用的。它的优点是:把验证逻辑和你代码的业务逻辑分别开了。这就是面向切面编程的思想。就是横切关注点。你只需要关注某一个模块。这样就保证了代码的纯洁度。

流畅验证开源地址:https://github。com/Jeremyskinner/fluent验证

例句:面向方面程序是一种新的软件开发范式,它支持交叉关注点的模块化实现,并为面向方面程序的切片带来了困难。面向方面程序设计作为一种新的软件开发范型,能够实现横切关注点的模块化,其特有的语言元素和功能为切片增加了难度。好了,废话太多,直接进入正题,首先我们新建一个空白的手动音量调节项目:在模型文件夹下新建一个类客户:

使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.命名空间服务器端验证.模型{公共类客户{公共字符串名称{ get设置;}公共字符串电子邮件{ get设置;} }}然后新建一个文件夹验证器,在里面添加一个类客户整合器

既然是要使用流畅的验证,那么就是要引用它的类库了。

客户整合器类中,继承抽象验证器抽象类,(PS:这里和仰角指示器中的流畅的应用编程接口类似,EF中是继承实体类型配置类)

使用FluentValidation使用服务器端验证。模型;使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.命名空间服务器端验证.验证程序{公共类customerivalidator : abstractvalidatorcustomer {公共客户验证程序(){规则对于(s=s . Name)} .NotEmpty().WithMessage('名字不能为空');电子邮件规则NotEmpty().WithMessage('电子邮件不能为空');电子邮件规则。电子邮件地址()。WithMessage('电子邮件格式不合法');} }}控制器中的代码:

使用流体验证.结果;使用服务器端验证。模型;使用服务器端验证。验证器;使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.使用系统网络。手动音量调节命名空间服务器端验证.控制器{公共类客户控制器:控制器{ //GET:客户公共操作结果索引(){返回视图();}[httpset]公共行动结果索引(客户模型){ CustomerValidator验证器=new CustomerValidator();验证结果结果=验证器。验证(模型);如果(结果IsValid){ viewpag .名称=型号。名称;视图包。电子邮件=模型。电子邮件;} else { foreach(结果中的定义变量项。错误){ ModelState .AddModelError(项。属性名,项目错误消息);} }返回视图(模型);} }}修改一下,默认的路由:

公共静态无效注册路由(常规选择路由){路线.忽略重路由(' {resource}).axd/{ * PathInfo } ');路线. MapRoute(名称:“默认”,URL :“{ controller }/{ action }/{ id }”,默认s 3360新{ controller=“Customer”,action=“Index”,id=UrlParameter .可选});}

什么都不输入,直接点击创建:

输入姓名而不是电子邮件

输入姓名、电子邮件并输入非法数据

输入合法数据:

流畅验证验证在此完成。可以看到这种验证是否干净简单很多,配置信息在同一个类中,便于维护和扩展。与数据注释不同,身份验证信息与实体混合在一起。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+