MVC Model验证
MVC Model验证ASP.NET MVC中的Model是自验证的,这是通过.NET4的System.ComponentModel.DataAnnotations命名空间完成的。 我们要做的只是给Model类的各属性加上对应的验证标记(Attributes)就可以让MVC框架帮我们完成验证。
一、MVC中自带Model验证标记
1、非空验证
[DisplayName("姓名")]
[Required(ErrorMessage = "姓名不能为空")]
public string Name { get; set; }
效果图
2、字段长度验证
[DisplayName("密码")]
[StringLength(6, ErrorMessage = "密码不能超过6个字符")]
public string Password { get; set; }
要求至少n位
[StringLength(160, MinimumLength=3)]
public string FirstName { get; set; }
3、正则表达式验证
[DisplayName("电子邮件")]
[RegularExpression(@"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$",
ErrorMessage = "请输入正确的Email格式\\n示例:abc@123.com")]
public string Email { get; set; }
效果图
4、范围验证
[DisplayName("年龄")]
[Range(1, int.MaxValue, ErrorMessage = "请输入大于等于1的数")]
public int Age { get; set; }
小数的情况
[Range(typeof(decimal), “0.00”, “49.99”)]
public decimal Price { get; set; }
5、远程服务端验证
Remote异步请求验证,返回类型为Json类型的JavaScript对象。
Model代码
[DisplayName("姓名")]
[Required(ErrorMessage = "姓名不能为空")]
[Remote("GetUser", "User", ErrorMessage = "该姓名已存在")]
public string Name { get; set; }
Controller代码
public ActionResult GetUser(string name)
{
return Json(name != "aa", JsonRequestBehavior.AllowGet);
}
效果图
6、 比较验证
[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; }
二、自定义Attbitue验证
1、新建一个FutureTimeAttribute类
namespace MvcStudy.Validation
{
public class FutureTimeAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime dt = (DateTime)value;
if (dt != null)
{
if (dt < DateTime.Now)
{
return true;
}
}
return false;
}
}
}
2、使用
3、效果图
填写一个将来的时间点击注册之后我们将会看到如下的结果