相信大家都看過 資料驗證(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專案中試試看,也可以依照你的需求去做更改喔!
延伸閱讀
大家好我是饅頭,希望大家喜歡我的文章
如果有錯誤的地方請不吝指教 ^_^