码迷,mamicode.com
首页 > 其他好文 > 详细

模型类的数据注解

时间:2015-03-08 18:50:51      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

Asp.net MVC中(由.net框架和EF提供的)验证支持是DRY(Don‘t Repeat Yourself)原则实践的一个很好的例子。只要在模型类中给字段和属性声明注解属性,就可以应用于使用这个模型的所有视图中,通过数据注解,可以指定模型类的数据显示格式,验证规则,和数据库映射规则。

System.ComponentMode.DataAnnotations 命名空间提供了一些内置的属性,都可以自定义错误消息。

验证属性:Required,定义不能为空;Stringlength,字符长度;RegularExpression,正则表达式;Range()范围.

显示属性:Display(Name=),定义显示的字段名,DispalyFormat(),显示格式。

数据库映射:Column("")映射到指定的列名,Column(TypeName="")当数据库中的类型比C#中类型更具体的时候,映射到数据库中指定的类型。

其它:DataType(DataType.XX)可以启用浏览器支持html5的一些特征。

代码如下:

 public class Movie
    {
        public int ID { get; set; }

        [Display(Name="片名")] //定义网页中显示的字段名称。
        [Required(AllowEmptyStrings=false,ErrorMessage="{0}不能为空")] //值类型(decimal,int等)默认不能为空,可以通过Required注解属性自定义错误提示消息,ErrorMessage中{0}表示字码名称,如果在Display(Name="")属性中已声明,则使用Name值,如本例中的"片名"。    

   [StringLength(20,MinimumLength=3,ErrorMessage="{0}必须大于{2},小于{1}")] //StringLength注解属性第一个参数是最大字段值,会更改数据库的结构,MinimunmLength不会更改数据库的结构,但会应用于客户端和服务端的验证。ErrorMessage 中{0}表示字码名称,{1}表示StringLength的第一个参数最大值,{2}表示StringLength的第二个参数MinimumLength;
        public string Title { get; set; }

        [Display(Name="发行日期")]
        [DataType(DataType.Date)]  //利用浏览器支持html5的属性,此处是出现一个日期选取框,不更改数据库     [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] //指定显示格式。
        public DateTime ReleaseDate { get; set; }

        [Display(Name="影片分类")]
        [Required(ErrorMessage="{0}不能为空")]
        [StringLength(30)]
        public string Genre { get; set; }
       
        [Required(AllowEmptyStrings=false,ErrorMessage="{0}必填")]    

       [Display(Name="价格")]
        [Column(TypeName="money")] //指定字段映射到数据库表的列名。
        [Range(1,1000,ErrorMessage="{0}必须大于{1},并且小于{2}")] //{0}表示字段的显示名称,{1}为Range的第一个参数,最小值。{2}为Range的第二个参数,最大值。
        [DataType(DataType.Currency)] //利用浏览器支持html5的属性,此处是出现基于本地的货币符号。
        public decimal Price { get; set; }

        [Display(Name="影片分级")]
        [Required(ErrorMessage="{0}不能为空")]
        [StringLength(6,ErrorMessage="{0}不能超过6个字")]
        public string Rating { get; set; }
    }

 

控制器方法中的if(ModelState.IsValid),就是模型绑定器来检查数据是否合法,它将 内置的属性同时支持客户商、浏览器的验证。如果错误发生,先是

模型类的数据注解

标签:

原文地址:http://www.cnblogs.com/liuyuanhao/p/4322038.html

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