手机版

ASP.NET全栈开发教程后台验证前结合详解

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

前言

在Web系统的开发中,经常会有大量的交互操作,交互中必须验证数据的准确性,更不用说一个领域可能会有各种验证。如果提交的表单有10个字段,我们是否应该编写代码来分别验证这10个字段?如果是这样的话,分别为每张表格写一张支票岂不是太痛苦了?

为了解决这个问题,聪明的程序员开始“偷懒”!

今天,我们在。NET平台。顾名思义,他的验证很流畅,这使得我们的验证开发工作流畅甚至漂亮。

接下来,让我们看看如何使用它。

首先,我们使用nuget来安装FluentValidation

Nuget安装命令: install-package fluent验证-版本7.6.104

由于FluentValidation的验证是基于模型的,让我们首先建立一个Person

public class person {///summary///name///summary public string name { get;设置;}///summary///Age///summary public int Age { get;设置;}///summary///gender/////summary public bool Sex { get;设置;}}有了模型,如果要验证模型,就必须有一个验证器,所以我们正在创建一个Person的验证器

public class person validator : abstract validator person { public person validator(){ this。规则为(p=p.name)。不为空()。withmessage('名称不能为空');这个。(p=p .年龄)的规则。不为空()。withmessage ('age不能为空!');}}验证器必须从AbstractValidatorT继承,泛型t表示验证器验证的实体,通过this.RuleFor为构造函数中指定的属性设置验证,在上面的配置中,Person的Name和Age属性都设置为非空,并给出相应的错误消息。

现在有了实体和验证者,只是东风。

类程序{静态void Main(string[]args){ Server(new Person)};控制台。ReadKey(真);}私有静态void Server(Person model){ var validator=new Person validator();验证结果结果=验证器。验证(模型);if(!结果。isvalid) {foreach(结果中的var失败。错误){//失败属性的名称,如错误消息控制台。writeline ('property '失败。“属性名”验证失败。errorwas:失败。error message);}}控制台。WriteLine('验证已完成!');}}在Server方法中需要一个参数Person,它是一个具有名称、年龄和性别三个属性的对象。我们在Server内部创建了一个Person验证器对象来验证我们的参数模型,验证后将返回一个验证结果。这个结果中有两个重要参数,第一个是IsValid,验证通过时返回True,第二个是Errors,存储所有验证失败信息。当验证失败时,您可以通过遍历Errors获取所有错误信息。如上所示,您可以通过错误信息的PropertyName知道哪个对象出错了,并且ErrorMessage自然对应于该属性错误内容的WithMessage。以下是运行结果

此时,我们可以使用基本身份验证。

但是在我们的实际应用中,可能没有上面的情况那么顺利。也许在我们的Person中会有一个Address属性,它的类型不是字符串,而是一个对象Address,如下所示

public class person {///summary///name///summary public string name { get;设置;}///summary///Age///summary public int Age { get;设置;}///summary///gender/////summary public bool Sex { get;设置;}///summary///address////summary公共地址地址{ get设置;}}公共类地址{///summary///home address////summary公共字符串home { get设置;}///summary///home phone////summary public string phone { get;设置;}}如果地址也有验证器,

公共类地址验证器: abstractvalidataaddress {公共地址验证器(){this。(m=m.home)的规则。不为空()。withmessage('家庭地址不能为空');这个。(m=m电话)的规则。长度(11,12)。withmessage ('phone必须在11到12位数字之间');}}现在要求变了。在Person实体的要求中,不仅姓名和年龄不能为空,而且“地址”下的“家庭”和“电话”也应满足AddressValidator的要求。我能怎么做呢?

你当然可以这样做

public class person validator : abstract validator person { public person validator(){ this。规则为(p=p.name)。不为空()。withmessage('名称不能为空');这个。(p=p .年龄)的规则。不为空()。withmessage ('age不能为空!');这个。(p=p. address)的规则。家)。最小长度(5)。withmessage('家庭地址的最小长度为5 ');}}通过Person为每个属性配置验证并非不可能。Address,但如果Address属性较多,配置时重复工作量会大大增加,AddressValidator已经配置好了。你能认为重新配置是浪费生命吗?

幸运的是,FluentValidation提供了一种为属性设置验证器的机制。

public class person validator : abstract validator person { public person validator(){ this。规则为(p=p.name)。不为空()。withmessage('名称不能为空');这个。(p=p .年龄)的规则。不为空()。withmessage ('age不能为空!');这个。(p=p .地址)的规则。不为null()。WithMessage(“地址不能为空”)。SetValidator(新地址验证器());}}通过此,我们将“地址”下的“家庭”和“电话”的验证附加到“人”的“地址”属性中。

这是第一个知道和使用的地方。感谢阅读官方。后续更新将持续到系统架构构建完成。

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

版权声明:ASP.NET全栈开发教程后台验证前结合详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。