您的位置:首页 > 编程学习 > ASP.NET > 正文

MVC Model验证

更多 时间:2015-9-27 类别:编程学习 浏览量:950

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、字段长度验证

     

  •  至多n位
  •  
  • 
        [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、效果图

    填写一个将来的时间点击注册之后我们将会看到如下的结果

     

    标签:MVC