代码改变世界

[MVC4]Data Annotations Extensions:无法使用EmailAddress等验证特性的解决方法

2013-11-02 21:11  Hejin.Wong  阅读(2939)  评论(1编辑  收藏  举报

  本文地址: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