MVC Model验证

1.非空和数据类型验证
        [Required]
        [Display(Name = "用户名")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

        [Required]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "电子邮件地址")]
        public string Email { get; set; }

2.非空和字符长度验证
        [Required(ErrorMessage="用户名不能为空!")]
        [DisplayName("用户名")] 3         public string UserName { get; set; }

        [DisplayName("密码")]
        [StringLength(6,ErrorMessage="密码长度不能超过6个字符!")]
        public string Password { get; set; }
3.值域验证
        [DisplayName("年龄")]
        [Range(1,int.MaxValue,ErrorMessage="年龄不能小于1!")]        
        public int Age { get; set; }
4.比较验证
        [Required]
        [DataType(DataType.Password)]
        [DisplayName("密码")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [DisplayName("确认密码")]
        [Compare("Password", ErrorMessage = "密码和确认密码不匹配!")]
        public string ConfirmPassword { get; set; }

5.正则表达式验证
        [DisplayName("联系电话")]
        [RegularExpression(@"^((0\d{2,5}-)|\(0\d{2,5}\))?\d{7,8}(-\d{3,4})?$",ErrorMessage = "电话格式不正确!\n 有效格式为:\n①本区7或8位号码[-3或4位分机号码,可选]\n②(3~5位区号)7或8位号码[-3或4位分机号码,可选]\n③3~5位区号-7或8位号码[-3或4位分机号码,可选]\n示例:023-12345678;(023)1234567-1234")]
        public string Phone { get; set; }
        [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; }
        [DisplayName("网址")]
        [RegularExpression(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", ErrorMessage = "请输入合法的网址!\n示例:https://abc.com;http://www.abc.cn")]
        public string Httpaddress { get; set; }

6.自定义验证
        [Required]
        [ValidatePasswordLength]
        [DataType(DataType.Password)]
        [DisplayName("密码")]
        public string Password { get; set; }
    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public sealed class ValidatePasswordLengthAttribute : ValidationAttribute, IClientValidatable
    {
        private const string _defaultErrorMessage = "'{0}' 必须至少包含 {1} 个字符。";
        private readonly int _minCharacters = Membership.Provider.MinRequiredPasswordLength;

        public ValidatePasswordLengthAttribute()
            : base(_defaultErrorMessage)
        {
        }

        public override string FormatErrorMessage(string name)
        {
            return String.Format(CultureInfo.CurrentCulture, ErrorMessageString,
                name, _minCharacters);
        }

        public override bool IsValid(object value)
        {
            string valueAsString = value as string;
            return (valueAsString != null && valueAsString.Length >= _minCharacters);
        }

        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            return new[]{
                new ModelClientValidationStringLengthRule(FormatErrorMessage(metadata.GetDisplayName()), _minCharacters, int.MaxValue)
            };
        }
    }


常用模型正则验证:
(模型正则验证和js正则验证不同)

数字:"^[0-9]*$"。


n位的数字:"^\d{n}$"。


至少n位的数字:"^\d{n,}$"。


m~n位的数字:。"^\d{m,n}$"


零和非零开头的数字:"^(0|[1-9][0-9]*)$"。


有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。


有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。


非零的正整数:"^\+?[1-9][0-9]*$"。


非零的负整数:"^\-[1-9][]0-9"*$。


长度为3的字符:"^.{3}$"。


由26个英文字母组成的字符串:"^[A-Za-z]+$"。


由26个大写英文字母组成的字符串:"^[A-Z]+$"。


由26个小写英文字母组成的字符串:"^[a-z]+$"。


由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。


由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。


验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。


验证是否含有^%&’,;=?$\"等字符:"[^%&’,;=?$\x22]+"。


只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"


验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。


验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。


验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。


验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。


验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。


验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。

 

 

posted @ 2015-10-17 16:17  a8933882  阅读(139)  评论(0)    收藏  举报