[MVC4]Data Annotations Extensions:沒法使用EmailAddress等驗證特性的解決方法

  本文地址:http://www.cnblogs.com/egger/p/3404159.html  歡迎轉載 ,請保留此連接๑•́ ₃•̀๑!html

數據註解(Data Annotations)

  Web應用開發中表單驗證是是一個系統必不可少的功能!咱們能夠經過將驗證邏輯寫在action方法中(不推薦)來實現。MVC提供了數據註解(Data Annotations)功能,相比前者,它更省時、提升驗證邏輯的複用、減小action方法的複雜度。經過數據註解(Data Annotations) 與 jquery.validate 的結合實現服務端和客戶端的雙重驗證。Model是自驗證的, 咱們要只需給Model類的各屬性加上對應的驗證特性(Attributes)就能夠讓MVC框架幫咱們完成驗證。甚是方便。jquery

下面咱們經常使用基本驗證:
Required:必輸校驗
StringLength:長度校驗(注意重載)
RegularExpression:正則表達式校驗

 

 情景:EmailAddress特性不能用?

  今天MVC4學習中按照示例給一個屬性添加了 「 [EmailAddress(ErrorMessage = "We don't recognize this as a valid email address")] 」,可是程序編譯報錯!請看下圖:git

  

     看了項目中引用的System.ComponentModel.DataAnnotations.dll中,沒這個類:github

  

  不由疑惑,難道是我配置有問題:dll引入的有問題?畢竟這裏的使用不是隨意的,其間嘗試了許多方法,當我將項目的.NET Framework 版本由4.0改爲4.5,發現錯誤消失了!可是這裏的給的示例就是基於NET Framework 4.0!我就打開GAC中的System.ComponentModel.DataAnnotations.dll[4.0],發現有EmailAddressAttribute類的定義,而後就凌亂了[打開的方式不對嗎!!!]web

  

  而後百思不得其解,就有了這個提問 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/asp.net

  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

相關文章
相關標籤/搜索