[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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM