在傳統的asp.net開發中,數據的驗證一直是個火熱的話題,無論是客戶端進行驗證還是服務器進行驗證,通常我們都會為了一個簡單的業務而要去寫非常復雜的驗證方法。在MVC中,MVC為我們提供了各種數據注解和數據驗證的特性,很方便的讓我們能實現數據驗證這一繁瑣的工作,以下是我整理的常見的數據注解和驗證的DOME!注:自定義驗證特性並未寫在此篇中!
model中的驗證注解特性:
public class StuInfo { public int ID { get; set;} [Display(Name = "姓名")] //設置要顯示的字段名 [Required(ErrorMessage = "您需要填寫{0}")] //設置為必須字段 已經錯誤提示 [StringLength(50, MinimumLength = 3)] //設置最大長度和最小長度 public string Name { get; set;} [Display(Name = "年齡")] [Range(1, 150, ErrorMessage = "年齡填寫不正確!")] //設置 值范圍 public int Age { get; set;} [Display(Name = "身高")] [Range(typeof(decimal),"50.00", "250.00",ErrorMessage = "身高超出指定范圍")] public decimal Height { get; set;} [Display(Name = "生日")] [DataType(DataType.Date,ErrorMessage = "{0}格式不正確")] //設置數據類型以及錯誤提示 public DateTime Birthday { get; set;} [Display(Name = "電話")] [Remote("CheckPhone","StuInfo", ErrorMessage = "{0}已被注冊")] //在指定的Conteroller中的通道(route)中驗證數據 public string Phone { get; set;} [Display(Name = "地址")] [DataType(DataType.MultilineText)] public string Address { get; set;} [Display(Name = "電子郵箱")] [RegularExpression(@"(\w)+(\.\w+)*@(\w)+((\.\w+)+)",ErrorMessage = "{0}格式不正確")] //正則驗證 public string Email { get; set;} [Display(Name = "再次輸入電子郵箱")] [Compare("Email",ErrorMessage = "{0}兩次輸入不一致")] //設置比較兩個字段的值 public string EmailConfirm { get; set;} [Display(Name = "密碼")] [DataType(DataType.Password)] public string Password { get; set;} [Display(Name = "備用電子郵箱")] [DataType(DataType.EmailAddress,ErrorMessage = "{0}格式不正確")] public string email_B { get; set;} }
遠程驗證的通道:
public JsonResult CheckPhone(string phone) { var result= StuInfoBll.FindPhone(phone).count == 0; return Json(result, JsonRequestBehavior.AllowGet); }
效果:
正常下的網頁:
值范圍、值類型驗證效果:
正則驗證和比較字段值效果:
數據類型驗證效果: