Asp.net MVC模型数据验证扩展ValidationAttribute

在Asp.Mvc项目中有自带的一套完整的数据验证功能,客户端可以用HtmlHelper工具类,服务端可以用ModelState进行验证。而他们都需要System.ComponentModel.DataAnnotations类库中的特性功能,通过在属性上方添加特性就可以达到验证前后端验证数据的目的了。

常用的特性有Required,Range,RegularExpression等几个,这也是框架自带的几种常用验证特性,但是如果几种默认的验证规则满足不了我们功能要求得时候,这个时候就需要我们扩展一下了。

这几个特性都继承自ValidationAttribute这个类,也就是说它是验证特性的基类。

新建LyrAttribute.cs类,验证输入内容必须是“张三丰”这三个字才能通过验证

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
//继承    
public class LyrAttribute : ValidationAttribute{
    //是否开启验证
public bool AllowNull { get; set; }
     //重写方法
public override bool IsValid(object value){if (value == null){return false;}var stringValue = value as string;if (stringValue != null && !AllowNull){return stringValue.Trim() == "张三丰";}return base.IsValid(value);}

/// <summary>
///重写方法

/// </summary>
/// <param name="value">验证内容</param>
/// <param name="validationContext">验证上下文类</param>
/// <returns></returns>

protected override ValidationResult IsValid(object value, ValidationContext validationContext){if (value == null){
          //返回验证结果
return new ValidationResult(ErrorMessage = "不能为空");}var stringValue = value as string;if (stringValue != null && !AllowNull){return stringValue.Trim() == "张三丰" ? ValidationResult.Success : new ValidationResult(ErrorMessage = "输入错误,必须是张三丰");}return ValidationResult.Success;}}


在实体类中使用:


验证结果:

这样就完成了

 



 

 

转载于:https://www.cnblogs.com/MrLiu90/p/9890115.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

seaborn 子图_Seaborn FacetGrid:进一步完善子图

seaborn 子图Data visualizations are essential in data analysis. The famous saying “one picture is worth a thousand words” holds true in the scope of data visualizations as well. In this post, I will explain a well-structured, very informative collection …

基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(一)

&#xfeff;&#xfeff;题外话&#xff1a; 最近在忙公司的云项目空闲时间不是很多&#xff0c;所以很久没来更新&#xff0c;今天补上一篇&#xff01; 回顾&#xff1a; 前几篇介绍了一下设计器的界面和Draw2d基础知识&#xff0c;这篇讲解一下本设计器如何扩展Draw2d。 进…

深度学习网络总结

1.Siamese network Siamese [saiə mi:z] 孪生 左图的孪生网络是指两个网络通过共享权值实现对输入的输出&#xff0c;右图的伪孪生网络则不共享权值(pseudo-siamese network)。 孪生神经网络是用来衡量两个输入的相似度&#xff0c;可以用来人脸验证、语义相似度分析、QA匹配…

异常检测时间序列_时间序列的无监督异常检测

异常检测时间序列To understand the normal behaviour of any flow on time axis and detect anomaly situations is one of the prominent fields in data driven studies. These studies are mostly conducted in unsupervised manner, since labelling the data in real lif…

python设计模式(七):组合模式

组合&#xff0c;将对象组合成树状结构&#xff0c;来表示业务逻辑上的[部分-整体]层次&#xff0c;这种组合使单个对象和组合对象的使用方法一样。 如描述一家公司的层次结构&#xff0c;那么我们用办公室来表示节点&#xff0c;则总经理办公司是根节点&#xff0c;下面分别由…

Django框架是什麼?

Django在新一代的Web框架中非常出色,为什么这么说呢&#xff1f;为回答该问题,让我们考虑一下不使用框架设计Python网页应用程序的情形.贯穿整本书,我们多次展示不使用框架实现网站基本功能的方法,让读者认识到框架开发的方便,&#xff08;不使用框架,更多情况是没有合适的框架…

存款惊人_如何使您的图快速美丽惊人

存款惊人So, you just finished retrieving, processing, and analyzing your data. You grab your data and you decide to graph it so you can show others your findings. You click ‘graph’ and……因此&#xff0c;您刚刚完成了数据的检索&#xff0c;处理和分析。 您获…

pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化

前言&#xff1a;pytest.mark.parametrize装饰器可以实现测试用例参数化。 parametrizing 1. 下面是一个简单是实例&#xff0c;检查一定的输入和期望输出测试功能的典型例子 2. 标记单个测试实例为失败&#xff0c;例如使用内置的mark.xfail&#xff0c;则跳过该用例不执行直…

基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d详解(二)

&#xfeff;&#xfeff;上一篇我们介绍了Draw2d整体结构&#xff0c;展示了组件类关系图&#xff0c;其中比较重要的类有Node、Canvas、Command、Port、Connection等&#xff0c;这篇将进一步介绍Draw2d如何使用以及如何扩展。 进入主题&#xff1a; 详细介绍一下Draw2d中几个…

c#中ReadLine,Read,ReadKey的区别

Console.Read()、Console.ReadLine() 相同点&#xff1a; 1.两者都是用于输入的函数。 不同点&#xff1a; 1. Read只能读取一个字符&#xff0c;ReadLine可以读取一个字符串 如 Read读取A和AASDGU的返回值都是一样的 都为A的ASCII值&#xff0c;对于后续的ASDGU不理会。 而Rea…

Ubuntu16.04 开启多个终端,一个终端多个小窗口

Ubuntu16.04 开启多个终端&#xff0c;一个终端多个小窗口 CtrlShift T,一个终端开启多个小终端 CtrlAlt T 开启多个终端 posted on 2019-03-15 11:26 _孤城 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/liuweijie/p/10535904.html

敏捷 橄榄球运动_澳大利亚橄榄球迷的研究声称南非裁判的偏见被证明是错误的

敏捷 橄榄球运动In February 2020, an Australian rugby fan produced a study, claiming to show how South African rugby referees were exhibiting favorable bias towards South African home teams. The study did not consider how other countries’ referees treat So…

activiti 部署流程图后中文乱码

Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科&#xff1a;工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统&#xff0c;当然基本都是有工作流的支持&#xff0c;不过当时使用的工作流引擎是公司一些…

Luogu 4755 Beautiful Pair

分治 主席树。 设$solve(l, r)$表示当前处理到$[l, r]$区间的情况&#xff0c;我们可以找到$[l, r]$中最大的一个数的位置$mid$&#xff0c;然后扫一半区间计算一下这个区间的答案。 注意&#xff0c;这时候左半边是$[l, mid]$&#xff0c;而右区间是$[mid, r]$&#xff0c;我…

网络传播动力学_通过简单的规则传播动力

网络传播动力学When a single drop of paint is dropped on a surface the amount of space that the drop will cover depends both on time and space. A short amount of time will no be enough for the drop to cover a greater area, and a small surface will bound the…

【左偏树】【P3261】 [JLOI2015]城池攻占

Description 小铭铭最近获得了一副新的桌游&#xff0c;游戏中需要用 m 个骑士攻占 n 个城池。这 n 个城池用 1 到 n 的整数表示。除 1 号城池外&#xff0c;城池 i 会受到另一座城池 fi 的管辖&#xff0c;其中 fi <i。也就是说&#xff0c;所有城池构成了一棵有根树。这 m…

【原创】数据库中为什么不推荐使用外键约束

引言 其实这个话题是老生常谈&#xff0c;很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条 【强制】不得使用外键与级联&#xff0c;一切外键概念必须在应用层解决。 但是呢&#xff0c;询问他们原因&#xff0c;大多是这么回答的 每次做DELETE 或者…

初识Activiti

http://wenku.baidu.com/view/bb7364ad4693daef5ff73d32.html 1. 初识Activiti 1.1. 工作流与工作流引擎 工作流&#xff08;workflow&#xff09;就是工作流程的计算模型&#xff0c;即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其…

开源软件 安全风险_3开源安全风险及其解决方法

开源软件 安全风险Open source software is very popular and makes up a significant portion of business applications. According to Synopsys, 99% of commercial databases contain at least one open source component, and nearly 75% of these codebases contain open…

React-Router 源码分析1

1、单页面应用的路由基本原理 demo1 router1.html 复制代码以 hash 形式为例。 1、init 监听浏览器 url hash 更新事件。 2、route 存储路由更新时的回调到回调数组routes中&#xff0c;回调函数将负责对页面的更新。 3、refresh 执行当前url对应的回调函数&#xff0c;更新页面…