本文地址:http://www.cnblogs.com/egger/p/3404159.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑!

数据注解(Data Annotations)

  Web应用开发中表单验证是是一个系统必不可少的功能!我们可以通过将验证逻辑写在action方法中(不推荐)来实现。MVC提供了数据注解(Data Annotations)功能,相比前者,它更省时、提高验证逻辑的复用、减少action方法的复杂度。通过数据注解(Data Annotations) 与 jquery.validate 的结合实现服务端和客户端的双重验证。Model是自验证的, 我们要只需给Model类的各属性加上对应的验证特性(Attributes)就可以让MVC框架帮我们完成验证。甚是方便。

下面我们常用基本验证:
Required:必输校验
StringLength:长度校验(注意重载)
RegularExpression:正则表达式校验

情景:EmailAddress特性不能用?

  今天MVC4学习中按照示例给一个属性添加了 “ [EmailAddress(ErrorMessage = "We don't recognize this as a valid email address")] ”,但是程序编译报错!请看下图:

  

看了项目中引用的System.ComponentModel.DataAnnotations.dll中,没这个类:

  

  不禁疑惑,难道是我配置有问题:dll引入的有问题?毕竟这里的使用不是随意的,其间尝试了许多方法,当我将项目的.NET Framework 版本由4.0改成4.5,发现错误消失了!但是这里的给的示例就是基于NET Framework 4.0!我就打开GAC中的System.ComponentModel.DataAnnotations.dll[4.0],发现有EmailAddressAttribute类的定义,然后就凌乱了[打开的方式不对吗!!!]:

  

  然后百思不得其解,就有了这个提问 http://q.cnblogs.com/q/56482/  。这里感谢 【Arnold】的回答,知道了怎么去解决这个问题!要想使用需要引用DataAnnotationsExtensions库。

  using DataAnnotationsExtensions;
  ...  
 
[Required]
[Email]
public string Email { get; set; }

  通过Nuget下载DataAnnotationsExtensions类库

  

  页面引入DataAnnotationsExtensions,将EmailAddress改成Email编辑通过,运行效果:

  

 

DataAnnotationsExtensions类库

  官网传送门:http://dataannotationsextensions.org/

  Github传送门:https://github.com/srkirkland/DataAnnotationsExtensions

  DataAnnotationsExtensions类库对内置DataAnnotations验证特性(Required, Range, RegularExpression 和 StringLength)进行了扩展。
核心库提供的服务器端验证特性可用于在任何.NET 4.0项目。

  这是类库提供的扩展特性:

  

总结

  通过引入DataAnnotationsExtensions的类库方式实现Email格式的数据验证,而不用通过RegularExpression方式甚是方便!

  但为什么 4.0中EmailAddressAttribute有定义但是为什么不能使用!难道是挖的坑到了4.5才填了!(知道真相的请科普下)

相关文章:

  INTRODUCING DATA ANNOTATIONS EXTENSIONS  http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx

最新文章

  1. 8Spring初步----青软S2SH(笔记)
  2. [转载]jquery版小型婚礼(可动态添加祝福语)
  3. C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径 (转帖)
  4. iOS_UIImage_给图片添加水印
  5. 聊聊SOA面向服务架构
  6. 斐波那契(Fibonacci)数列的几种计算机解法
  7. css样式单位取整,去掉'px'
  8. Python 核心数据类型
  9. js函数中的几个特点
  10. javascript DOM操作 第19节
  11. 青否云 - 小程序待办事项vue开源系统
  12. 【iOS】Swift ?和 !(详解)
  13. java操作properties配置文件
  14. cocos大量对象使用动作注意事项
  15. Android Studio 学习(一)
  16. tomcat9.0 配置账户
  17. E325 注意 发现交换文件
  18. chmod 权限 命令详细用法
  19. SQL SERVER 2008 彻底卸载干净方法 (转)
  20. Spring Cloud组件

热门文章

  1. 使用webpack配置react并添加到flask应用
  2. 爬虫--Scrapy框架的基本使用
  3. Ubuntu每次开机后提示:检测到系统程序出现问题的解决方法
  4. 大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响(转)
  5. Linux/Unix 怎样找出并删除某一时间点的文件
  6. PCA算法和SVD
  7. c++鼠标点点,获取坐标值,放入到txt文件中
  8. 转:google测试分享-分层测试
  9. Logistic回归与梯度上升算法
  10. Nginx 虚拟目录和虚拟主机的配置