数据注解特性定义在名称空间System.ComponentModel.DataAnnotations 中(但接下来
将看到,有些特性不是定义在这个名称空间中)。它们提供了服务器端验证的功能,当在模
型的属性上使用这些特性之一时,框架也支持客户端验证。在名称空间DataAnnotations 中,
有4 个特性可以用来应对一般的验证场合。下面从Required 特性开始对它们逐一介绍。

1.Required 必须字段

[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }

2.StringLength 字符长度

[Required]
[StringLength(160)]
public string FirstName { get; set; }
[Required]
[StringLength(160)]
public string LastName { get; set; }

[Required]
[StringLength(160, MinimumLength=3)]
public string FirstName {get; set;}

3.RegularExpression

[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]
public string Email { get; set; }

4.Range

Range 特性用来指定数值类型值的最小值和最大值。

[Range(35,44)]
public int Age {get; set;}

该特性的第一个参数设置的是最小值,第二个参数设置的是最大值,这两个值也包含
在范围之内。Range 特性既可用于int 类型,也可用于double 类型。它的构造函数的另外
一个重载版本中有一个Type 类型的参数和两个字符串(这样就可以给date 属性和decimal
属性添加范围限制了)。

[Range(typeof(decimal), "0.00", "49.99")]
public decimal Price {get; set;}

5. System.Web.Mvc 下的验证特性
ASP.NET MVC框架还为应用程序在名称空间System.Web.Mvc 中额外添加了两个验证
特性。其中一个是Remote 特性。Remote 特性允许利用服务器端的回调函数执行客户端的
验证逻辑。以MVC Music Store 中RegisterModel 类的UserName 属性为例,系统中不允许
两个用户具有相同的UserName 值,但是在客户端很难验证以确保UserName 属性值的唯
一性(除非把所有的用户名都从数据库传送到客户端)。使用Remote 特性可以把UserName
的值传到服务器,然后在服务器端的数据库中与相应的表字段值进行比较:

[Remote("CheckUserName", "Account")]
public string UserName {get; set;}

在特性中可以设置客户端代码要调用的控制器名称和操作名称。客户端代码将自动把
用户输入的UserName 属性值发送到服务器,该特性的一个重载构造方法还允许指定要发
送给服务器的其他字段:

public JsonResult CheckUserName(string username)
{
var result = Membership.FindUsersByName(username).Count == 0;
return Json(result, JsonRequestBehavior.AllowGet);
}

上面的控制器操作将利用与UserName 属性同名的参数进行验证,并返回一个封装在
JavaScript Object Notation(JSON)对象中的布尔类型值(true 或false)。第8 章将会对JSON、
AJAX 和其他客户端特征进行详细介绍。
第二个是Compare 特性,它用于确保模型对象的两个属性拥有相同的值。例如,为了
避免顾客输入错误,往往要求输入两次e-mail 地址:

[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]
public string Email { get; set; }
[Compare("Email")]
public string EmailConfirm { get; set; }

是由于数据注解的可扩展性,才导致了Remote 和Compare 特性的存在。本章后面部分将会讲解如何创建自定义注解。下面介绍如何在验证失败时创建自定义的错误提示消息。

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

6.1.1 验证注解的使用相关推荐

  1. javax.validation:validation-api:2.0.1.Final.jar 包常用验证注解解析

    javax.validation:validation-api:2.0.1.Final.jar 包常用验证注解解析 1.应用 @Data @NoArgsConstructor @AllArgsCons ...

  2. php注释验证,注解验证 · ThinkPHP6.0完全开发手册 · 看云

    ## 注解验证器 ThinkPHP支持使用注解方式定义路由和验证,需要安装额外的扩展: ``` composer require topthink/think-annotation ``` 然后可以直 ...

  3. Springboot 自定义身份证验证注解

    定义一个注解@Ident 实现注解方法IdentValidated /*** 身份证号码验证*/ @Constraint(validatedBy = { IdentValidated.class }) ...

  4. java注解定义时间格式_SpringBoot基础教程2-1-8 数据验证-自定义日期格式验证

    1 概述 javax.validation包与hibernate-validator包中注解能满足大部分需求,但是还是有必要熟悉下自定义数据验证注解,如日期格式验证. 2 添加依赖 org.sprin ...

  5. MVC5 数据注解和验证

    ①利用数据注解进行验证 ②创建自定义的验证逻辑 ③模型元数据注解的用法 ①先创建数据源 1,创建我们的Model  Order 2,创建控制器带EF 选择模型为Order 当你运行的时候会报错,需要代 ...

  6. SpringBoot 中使用 @Valid 注解 + Exception 全局处理器优雅处理参数验证

    作者:超级小豆丁 http://www.mydlq.club/article/49/ 目录 一.为什么使用 @Valid 来验证参数 二.@Valid 注解的作用 三.@Valid 的相关注解 四.使 ...

  7. 注解形式控制器 数据验证,类型转换(3)

    7.4.数据验证 7.4.1.编程式数据验证 Spring 2.x提供了编程式验证支持,详见[4.16.2 数据验证]章节,在此我们重写[4.16.2.4.1.编程式验证器]一节示例. (1.验证器实 ...

  8. 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》

    文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...

  9. SpringMVC数据验证——第七章 注解式控制器的数据验证、类型转换及格式化——SpringMVC

    7.4.数据验证 7.4.1.编程式数据验证 Spring 2.x提供了编程式验证支持,详见[4.16.2 数据验证]章节,在此我们重写[4.16.2.4.1.编程式验证器]一节示例. (1.验证器实 ...

最新文章

  1. yii表单ajax验证,yii2 modal弹窗之ActiveForm ajax表单异步验证
  2. 我提出辞职,老板竟然让我做选择题(转)
  3. linux ubuntu文件浏览器如何显示隐藏文件?(快捷键ctrl+h)
  4. 《MacTalk·人生元编程》
  5. 织梦 mail.class.php,详解织梦模板DEDECMS核心类TypeLink.class.php功能分析
  6. 2019升职加薪必备:你一定要修炼的产品思维
  7. 汇编试验四:[bx] 和 loop 的使用
  8. 使用jfreechart在jsp页面柱状图统计
  9. 有哪些不讲武德的国外计算机学习资源?
  10. Map集合框架的练习
  11. 喜马拉雅下载文件解决办法
  12. 深入浅出 NXLog (二)
  13. Android为什么图片模糊不清,Android打开图库中图片为什么从模糊变清晰
  14. [转帖] 一个老乞丐的一句话,震惊全中国人!
  15. 网络显示dns服务器错误,电脑出现网络dns异常是怎么回事
  16. 什么是关联分析?如何利用关联规则做好数据挖掘
  17. FDE中的金属边界条件和PML边界条件的选取
  18. 微信开发之网页返回关闭浏览器
  19. 开始面试,我该准备什么
  20. matlab 局部极值点,matlab 图像局部求极值

热门文章

  1. 金融时报:谷歌撤离中国有99.9%的可能性
  2. sql server面试题
  3. 经历一次真实的XSS跨站攻击以及应付之策
  4. MYSQL的MERGE存储引擎
  5. 深入理解PHP原理之变量(Variables inside PHP)
  6. 在ASP.NET中跨页面实现多选
  7. jca分析java dump日志
  8. TensorRT Samples: MNIST
  9. 【linux】Valgrind工具集详解(九):Memcheck检查的内容和方法
  10. 【Qt】Qt项目常用代码总结