zoukankan      html  css  js  c++  java
  • [MVC4]Data Annotations Extensions:无法使用EmailAddress等验证特性的解决方法

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

  • 相关阅读:
    Java
    Java
    Java
    Java
    Java
    Hang Gliding线段树
    Biggest Number深搜
    2021年暑假康复性训练(Codeforces Round #731 (Div. 3))全题解
    Python GUI tkinter 随机生成题目
    ModuleNotFoundError: No module named ‘exceptions‘ 情况解决
  • 原文地址:https://www.cnblogs.com/egger/p/3404159.html
Copyright © 2011-2022 走看看