在Model中参加验证标识表记标帜
MVC3项目模板自带的登录模型类如下:
public class LogOnModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
对比通俗的C#类,我们发明每个属性上都多了被方括号“[]”包抄的标识表记标帜。此中,[Required]是验证标识表记标帜的一种,而[Display]、[DataType]则是为了显示对应的HTML控件,这不在本文评论辩论局限之内。
除了Required,我们还可以在Model中添加其他有效的验证标识表记标帜。下面是个较完全的列表:
Model类中可以添加的验证标识表记标帜:
- 必填字段
[Required]
public string FirstName { get; set; }
- 字段长度至多n位:
[StringLength(160)]
public string FirstName { get; set; }
请求至少n位:
[StringLength(160, MinimumLength=3)]
public string FirstName { get; set; }
- 正则验证
[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/.[A-Za-z]{2,4}”)]
public string Email { get; set; }
- 局限
[Range(35,44)]
public int Age { get; set; }
小数的景象:
[Range(typeof(decimal), “0.00”, “49.99”)]
public decimal Price { get; set; }
- 办事端参与的验证
[Remote(“CheckUserName”, “Account”)]
public string UserName { get; set; }
然后在AccountController里指定一个CheckUserName办法:
public JsonResult CheckUserName(string username)
{
var result = Membership.FindUsersByName(username).Count == 0;
return Json(result, JsonRequestBehavior.AllowGet);
}
- 斗劲
[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/.[A-Za-z]{2,4}”)]
public string Email { get; set; }
[Compare(“Email”)]
public string EmailConfirm { get; set; }
- 自定义错误消息
正则:
[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/.[A-Za-z]{2,4}”,
ErrorMessage=”Email doesn’t look like a valid email address.”)]
public string Email { get; set; }
通俗文本:
[Required(ErrorMessage=”Your last name is required”)]
[StringLength(160, ErrorMessage=”Your last name is too long”)]
public string LastName { get; set; }
占位符:
[Required(ErrorMessage=”Your {0} is required.”)]
[StringLength(160, ErrorMessage=”{0} is too long.”)]
public string LastName { get; set; }