Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用

简介:

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

一,查找所有验证规则

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

using System.ComponentModel.DataAnnotations;

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

不过,有三点需要注意:

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

 blog1

二,使用验证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
必填项检查,应用上该特性的字段,必须输入值。

cnblogs-justrun1983-blog1

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

cnblogs-justrun1983-blog2

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

cnblogs-justrun1983-blog3

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

cnblogs-justrun1983-blog4

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

cnblogs-justrun1983-blog5

 

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

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

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



本文转自JustRun博客园博客,原文链接:http://www.cnblogs.com/JustRun1983/p/3498763.html,如需转载请自行联系原作者


目录
相关文章
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
45 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
72 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
53 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
136 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
207 0
|
6月前
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
170 0
|
5月前
|
开发框架 JSON .NET
|
6月前
|
JSON 数据格式 微服务
.NET下 支持大小写不敏感的JSON Schema验证方法
有很多应用程序在验证JSON数据的时候用到了JSON Schema。 在微服务架构下,有时候各个微服务由于各种历史原因,它们所生成的数据对JSON Object属性名的大小写规则可能并不统一,它们需要消费的JSON数据的属性名可能需要大小写无关。 遗憾的是,目前的JSON Schema没有这方面的标准,标准中都是大小写敏感的。在类似上述情况下,这给使用JSON Schema进行数据验证造成了困难。
|
7月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
83 0