在設計網站階段時,對於欄位格式定義及驗證,強烈建議要先行設計好,才能讓相同欄位在不同頁面使用時,都能維持相同的格式驗證;而當欄位格式有異動時,也只需要修改一個地方,就能讓所有使用到的頁面都能一致同步修改。
資料驗證又可區分為前端驗證及後端驗證:
- 前端驗證:Client端使用Javascript預先檢查表單內容。
- 後端驗證:Server端利用Model資料驗證來防止異常儲存,也是此次主要說明的部份。
建置的方式並不會太困難,直接用一個範例來說明,會更加容易了解:
namespace DemoApp.Models
{
public calss People
{
[Required]
[StringLength(10, MinimumLength = 2, ErrorMessage = "{0} 的長度至少必須為 {2} 個字元。")]
[DisplayName(“姓名”)]
Public string Name{get;set;}
[DisplayName(“身高”)]
Public string Height{get;set;}
}
}
範例說明:
- [Required]是用來驗證必填功能。
- [StringLength]是用來判斷字串長度的;{0}是指欄位名稱,{2}是指第二組參數;意為姓名的長度至少必須為2個字元。
- [DisplayName]是用來呈現欄位名稱為雙引號內指定名稱。
當然還有很多屬性可以使用,整理了常用如下供參考:
- [ValidateNever]:ValidateNeverAttribute 指出屬性或參數應該從驗證中排除。
- [CreditCard]:驗證屬性是否具有信用卡格式。
- [DisplayName]:設定欄位的顯示名稱。
Ex.[DisplayName("帳號")]
- [Required]:設定為必填欄位。
Ex.[Required(ErrorMessage = "不可為空白")]
- [Range]:設定欄位內容數值範圍。
Ex.[Range(1, 100, ErrorMessage = "年齡須在{1}~{2}之間")]
- [Compare]:與指定的欄位比較內容是否相同。
Ex.[Compare("Password", ErrorMessage = "兩組密碼必須相同")]
- [EmailAddress]:驗證欄位是否為Email格式。
Ex.[EmailAddress(ErrorMessage ="Email格式有誤")]
- [Phone]:驗證屬性具有電話號碼格式。
Ex.[Phone(ErrorMessage ="電話號碼格式有誤")]
- [Url]:驗證欄位是否為網址格式。
Ex.[Url(ErrorMessage ="資料內容必須為網址格式")]
- [StringLength]:設定欄位字串長度。
Ex.[StringLength(12,MinimumLength = 6, ErrorMessage = "{0} 的長度至少必須為 {2} 個字元。")]
- [Remote]:在伺服器上呼叫動作方法,以驗證用戶端上的輸入。
- [RegularExpression]:設定欄位內容必須符合自訂的正規表達式,可參考2022鐵人賽文章。
Ex.[RegularExpression("[a-zA-z]{3}")]
- [DataType(DataType.MultilineText]:驗證欄位的資料型別-多列文字。
- [HiddenInput(DisplayValue = false)]:隱藏輸入。
- [DataType(DataType.DateTime)]:驗證欄位的資料型別-屬性是時間。
好的,今天就先到這兒,明天再來繼續吧!
參考來源:
MVC model驗證總結