https://www.cnblogs.com/zhangkai2237/archive/2012/12/06/2806239.html
对于web开发人员来说,对用户输入的信息进行验证是一个重要但是繁琐的工作,而且很多开发者都会忽略。asp.net mvc3框架使用的是叫做“数据注解”(DataAnnotations)的方式进行数据验证。
这种方式允许程序在客户端和服务器端进行双重验证(asp.net的数据验证控件也是双重验证的)。双重验证的好处是 客户端验证会直接相应用户,不用提交表单,也就减轻了服务器的压力还提高了用户体验;而服务器端验证是确保数据的有效性和完整性,因为有时候客户端会关闭脚本功能。 注意:要实现客户端验证,需要引用jquery以及jquery验证文件:<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>要实现服务器端验证,需要在提交表单后执行ModelState.IsValid 一、基础验证 1、Require(非空验证) Model:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Conten("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
[Required]验证结果:
[Display(Name = "用户名")]
public string UserName { get; set; }

[Required]验证结果
[StringLength(100, MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "密码")]
public string Password { get; set; }

[Required]验证结果:
[DataType(DataType.EmailAddress)]
[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9._]+\.[A-Za-z]{2,4}")]
[Display(Name = "电子邮件地址")]
public string Email { get; set; }

[Required]验证结果:
[Range(13, 18)]
[Display(Name="年龄")]
public int Age { get; set; }

[Required]Controller:
[Display(Name = "用户名")]
[Remote("CheckUserName","Account")]
public string UserName { get; set; }
public JsonResult CheckUserName(string userName)验证结果:
{
var result = userName == "admin";
return Json(result, JsonRequestBehavior.AllowGet);
}


[Required(ErrorMessageResourceType=typeof(ErrorMessage),ErrorMessageResourceName="UserRequire")]
[Display(Name = "用户名")]
[Remote("CheckUserName","Account", HttpMethod="POST")]
public string UserName { get; set; }
而Controller中也可以直接接受Post的请求,当然你加上[Httppost]也是可以的:
//[HttpPost]2、Compare(相同验证) Compare特性是用来验证输入的两个数据是否完全相同。最典型的例子就是注册时两次输入的密码是否相同。 Model:
public JsonResult CheckUserName(string userName)
{
var result = userName != "admin";
return Json(result, JsonRequestBehavior.AllowGet);
}
[Required]验证结果:
[StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "密码")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "确认密码")]
[Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]
public string ConfirmPassword { get; set; }
