博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用
阅读量:6271 次
发布时间:2019-06-22

本文共 2594 字,大约阅读时间需要 8 分钟。

上篇文章中,介绍了Asp.net MVC中的验证功能以及如何使用。这里将对MVC中内置的验证规则进行总结。

一,查找所有验证规则

上篇文章中提到,所有的验证规则都是位于下面的命名空间下:

using System.ComponentModel.DataAnnotations;

我们可以用ILSpy反编译工具,看看这个命名空间下都有些什么. 下面的图让我们一目了然,在这个命名空间下,.net为我们提供了那些验证规则。

不过,有三点需要注意:

1. 列出的类基本都是Attribute,如果不理解Attribute,可以看这里

2. 正如Annotation的意识是“注释”, 这个命名空间下的类的本质是为数据类型添加注释和解释。验证规则也是一种注释,是对于数据规范要求的注释。
所以下面的所有类并不全是验证规则, 比如DisplayAttribute使用与显示,KeyAttribute常常用于定义主键, 以后有机会再和大家分享.
3. 之所以这些类不在System.Web命名空间下,是因为这些验证规则是不单单用于MVC项目中的,实际上它们可以用于任何地方,MVC验证只是其中一处。

 

二,使用验证Attribute的Model

本文中,涉及的验证规则,都应用到下面的Employee Model上, 对照下面的验证规则的解释,就能非常容易明白每项验证功能的作用了。

public class Employee    {        public int EmpId { get; set; }        [DisplayName("Employee Name")]        [Required(ErrorMessage = "Employee Name is required")]        [StringLength(100, MinimumLength = 3)]        public String EmpName { get; set; }        [DisplayName("Password")]        [DataType(DataType.Password)]        [Required]        public string Password { get; set; }        [CompareAttribute("Password")]        [DataType(DataType.Password)]        public string ConfirmPassword { get; set; }        [Required(ErrorMessage = "Employee Address is required")]        [StringLength(300)]        public string Address { get; set; }        [Required(ErrorMessage = "Salary is required")]        [Range(3000, 10000000, ErrorMessage = "Salary must be between 3000 and 10000000")]        public int Salary { get; set; }        [DisplayName("Credit Card")]        [CreditCard(ErrorMessage = "Please enter correct credit card number.")]        public string CreditCardNumber { get; set; }        [Required(ErrorMessage = "Please enter your email address")]        [DataType(DataType.EmailAddress)]        [Display(Name = "Email address")]        [MaxLength(50)]        [EmailAddress(ErrorMessage = "Please enter correct email")]        public string Email { get; set; }    }

三,具体验证规则

下面就来一一介绍我们可以用于MVC项目中的验证规则:

1. RequiredAttribute

必填项检查,应用上该特性的字段,必须输入值。

2. CompareAttribute

CompareAttribute用于比较2个属性是否相同. 注册用户的时候,常常需要输入2次密码,其中一个是确认的密码,要求2个密码框中的密码必须相同,这个时候就可以应用CompareAttribute

3. RangeAttribute

用来限定数据范围,比如Age年龄字段,你可以限制数据必须在0~150之间。

4. StringLengthAttribute,MaxLengthAttribute和MinLengthAttribute

这3个都是用来对于字符串属性长度进行验证的。StringLength用来限定具体的长度,而后面的,一个是最大可输入长度,一个是最小的输入长度, 注意MaxLength和MinLength可以用于String和Array。

5. CreditCardAttribute验证

这个是用来验证信用卡的,支持多种类型信用卡的验证。

 

6. EmailAddressAttribute和UrlAttribute

这个非常简单,就是用来验证Email格式和Url格式的

7. FileExtensionsAttribute

用来检查文件名称后缀。假如你禁止上传.exe文件到服务器,这个时候,就可以通过它来做限制。

8. RegularExpressionAttribute

最后,如果上面的这些都无法符合你的要求,可以试试这个RegularExpressionAttribute. 它可以指定一个正则表达式作为验证规则。

 

转载地址:http://hylpa.baihongyu.com/

你可能感兴趣的文章
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>
【Docker学习笔记(四)】通过Nginx镜像快速搭建静态网站
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
关于FreeBSD的CVSROOT的配置
查看>>
基于RBAC权限管理
查看>>