码迷,mamicode.com
首页 > Web开发 > 详细

MVC-Model数据注解(一)-系统(DataAnnotations)

时间:2015-05-25 16:16:42      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:

1、基础验证:

using System.ComponentModel.DataAnnotations;

//字段显示名称
[Display(Name = "用户名")]

//数据类型(比如生成的文本框的类型)
[DataType(DataType.Password)]

//非空验证
[Required(ErrorMessage = "*")]

//字符长度验证
[StringLength(50, ErrorMessage = "字符长度应在6-50之间", MinimumLength = 6)]

//验证范围
[Range(10, 120, ErrorMessage = "年龄应在10-120之间")]

//正则表达式验证
[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9._]+\.[A-Za-z]{2,4}", ErrorMessage = "邮箱格式不正确")]

//邮箱格式验证
[EmailAddress(ErrorMessage = "邮箱格式不正确")]

其中:ErrorMessage里面是自定义错误信息,如果不加这个属性,将显示系统默认的提示错误信息(系统提示比较生硬可能),一般都加上这个属性。 

     ErrorMessage允许开发者使用{0}占位符来显示字段的显示名(即[Display(Name = "用户名")]),如果没有Display特性,那么会显示属性名。如:

[Required(ErrorMessage = "{0}不能为空!")]
[Display(Name = "用户名")]
public string UserName { get; set; }    

     如果验证的特性中还有其他参数,那么ErrorMessage可以用占位符直接显示其他参数,如:

[Required]
[StringLength(100, ErrorMessage = "请输入{2}到{1}位的{0}。", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "密码")]
public string Password { get; set; }
//系统会提示:“请输入6到100位的密码”。

 

2、附加验证:

附加验证是System.Web.Mvc中额外添加的两个验证特性,所以使用时必须添加using System.Web.Mvc

1、Remote(远程验证)
        虽然asp.net mvc3提供了很多在model中直接验证数据的特性,但是很多逻辑复杂的验证没办法在model中来验证,所以mvc3框架提供了这个远程验证特性,他允许开发者在Controller中用C#代码来验证数据的有效性。
        一个很经典的应用时验证用户名是否重复。这个数据验证没办法在客户端验证,除非将所有的用户名都发往客户端(显然这是不可能的)。所以Remote特性只进行服务器端验证。但是它是通过异步的方式进行验证,所以有更好的用户体验。
Model:
        [Required]
        [Display(Name = "用户名")]
        [Remote("CheckUserName","Account")]
        public string UserName { get; set; }

Controller:

        public JsonResult CheckUserName(string userName)
        {
            var result = userName == "admin";
            return Json(result, JsonRequestBehavior.AllowGet);
        }

 验证结果:

 技术分享

 注意:如果要Post提交,则需要加上HttpMethod=“POST”:

        [Display(Name = "用户名")]
        [Remote("CheckUserName","Account", HttpMethod="POST")]
        public string UserName { get; set; }

 

而Controller中也可以直接接受Post的请求,当然你加上[Httppost]也是可以的:

        //[HttpPost]
        public JsonResult CheckUserName(string userName)
        {
            var result = userName != "admin";
            return Json(result, JsonRequestBehavior.AllowGet);
        }

2、Compare(相同验证)

         Compare特性是用来验证输入的两个数据是否完全相同。最典型的例子就是注册时两次输入的密码是否相同。

Model:
技术分享
        [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; }
技术分享

验证结果:

技术分享 

         上面的是mvc框架的几种常用的数据注解,除了后两种mvc特有的特性,其他的特性都在System.ComponentModel.DataAnnotations中。

 

MVC-Model数据注解(一)-系统(DataAnnotations)

标签:

原文地址:http://www.cnblogs.com/yaosuc/p/4527886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!