【ASP.NET MVC】ASP.net MVC Model篇—資料驗證(2)

相信大家都看過 資料驗證(1) 的那一篇文章了,今天就接下去往下敘述吧!

在Model驗證中,我們都會利用Attribute的驗證方式,使用這種方式的好處就是可以縮短我們在程式設計的開發時間,而且使用方式都非常的簡單!這邊就一一做說明囉!

相信大家都看過 資料驗證(1) 的那一篇文章了,今天就接下去往下敘述吧!

在Model驗證中,我們都會利用Attribute的驗證方式,使用這種方式的好處就是可以縮短我們在程式設計的開發時間,而且使用方式都非常的簡單!這邊就一一做說明囉!

 

Attribute 類別 說明 伺服器端支援 用戶端支援
Compare 與某一欄位做比對是否相等 Yes Yes
CreditCard 驗證欄位值是否信用卡卡號為合法 Yes Yes
EmailAddress 驗證欄位值是否為合法的Email Yes Yes
Phone 驗證欄位值是否為合法的電話號碼 Yes Yes
MaxLength 設定欄位最大長度 Yes Yes
MinLength 設定欄位最小長度 Yes Yes
Range 設定輸入範圍 Yes Yes
RegularExpression 使用正則表示法做資料驗證 Yes Yes
Required 設定欄位必須輸入 Yes Yes
StringLength 設定欄位的最大最小輸入長度 Yes Yes
Url 驗證欄位資料是否為合法的網址 Yes Yes
Remote 傳入遠端驗證資料 No Yes
CustomValidation 自訂一資料驗證 Yes No

以上這些是在做資料驗證常用的方法,範例的部分...就容許小的直接使用一個會員註冊的資料來做說明吧!

 

在我們使用這些資料驗證的時候,我們要先引入命名空間

using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;

接下來看看我們的會員註冊欄位吧!

    public class DemoClass
    {
        [Display(Name = "電子信箱:")]   //此方法可以讓強型別產生Label中顯示相對應的文字
        [Required(ErrorMessage = "您必須輸入Email,此Email為後續您登入的帳號")] //要求這個欄位必須填入資料
        //假如資料庫有設定欄位上限,可用此方法設定,避免錯誤
        //並設定最少需要輸入六個字以上
        [StringLength(300, MinimumLength = 6, ErrorMessage = "此欄位僅接受300個字")]    
        [DataType(DataType.EmailAddress, ErrorMessage = "請輸入正確的電子信箱")]  //要求欄位是Email格式,與[EmailAddress]相同
        //設定伺服器驗證,在使用者輸入資料後會將資料傳入到Server端,進行驗證
        //Remote(ActionResult, Controller, HttpMethod = POST or GET, ErrorMessage = 要顯示的錯誤訊息)]
        //PS. ActionResult回傳資料若不是true,都會被認為驗證失敗
        [Remote("CheckAccount", "Home", HttpMethod = "POST", ErrorMessage = "此Email已申請過會員,如忘記密碼可按忘記密碼取回密碼")]
        public string Email { get; set; }

        [Display(Name = "會員密碼:")]
        [DataType(DataType.Password)]   //表示此欄位為密碼欄位,所以輸入時會產生隱碼
        [Required(ErrorMessage = "您必須輸入密碼!")]
        [StringLength(30, MinimumLength = 6, ErrorMessage = "會員帳號的長度需再6~30個字元內!")]
        //正則表示式的鑽寫方式可以參考:http://blog.roodo.com/rocksaying/archives/2670695.html
        [RegularExpression(@"[a-zA-Z]+[a-zA-Z0-9]*$", ErrorMessage = "密碼僅能有英文或數字,且開頭需為英文字母!")]
        public string Password { get; set; }

        [Display(Name = "確認會員密碼:")]
        [DataType(DataType.Password)]
        [Required(ErrorMessage = "請您再次輸入密碼!")]
        //與Password做比對,再次確認使用者輸入的密碼
        //會使用System.Web.Mvc.Compare,是因為引入System.ComponentModel.DataAnnotations時會有衝突的產生
        [System.Web.Mvc.Compare("Password", ErrorMessage = "兩次輸入的密碼必須相符!")]     
        public string ConfirmPassword { get; set; }

        [Display(Name = "真實姓名:")]
        [Required(ErrorMessage = "您必須填入真實姓名")]
        //設定輸入上限最多五個字
        //此設定同MaxLength
        [StringLength(5, ErrorMessage = "最多輸入五個中文字")]   
        public string RealName { get; set; }

        [Display(Name = "您的生日:")]
        //設定欄位為日期格式,此驗證不一定要輸入,可參考上一篇
        [DataType(DataType.Date, ErrorMessage = "請輸入正確的生日日期")]
        [Required(ErrorMessage = "您需要輸入您的生日")]
        public DateTime Birthday { get; set; }

        [Display(Name = "信用卡:")]
        [Required(ErrorMessage = "請選擇您的信用卡")]
        //讓欄位驗證為信用卡格式
        //與 [DataType(DataType.CreditCard)]相同
        [CreditCard]
        public String CreditCard { get; set; }
    }

如此一來我們就可以驗證好前端的資料是否輸入正確!降低我們在做資料處理的時候產生錯誤!

以上大家可以把Code複製到自己的MVC專案中試試看,也可以依照你的需求去做更改喔!

 

延伸閱讀

資料驗證(3)

 


 

大家好我是饅頭,希望大家喜歡我的文章

如果有錯誤的地方請不吝指教 ^_^