MVC 5 数据注解1

ASP.NET MVC5中数据注解原理:

1.asp.net MVC 的验证特性是由模型绑定器、模型元数据、模型验证器、模型状态组成的协调系统的一部分。
2.注解原理和步骤:
 
 验证与模型绑定:
  (1)、ASP.NET  MVC 默认情况下,在模型绑定时执行验证逻辑。如果控制器中的操作方法带有参数时,就会隐式地执行模型绑定。或者是利用控制器的UpdateModel或者            TryUpdateModel方法显式执行模型绑定。
   
【HttpPost】    
      Public  ActionResult Create(Album  album){   //隐式地执行模型绑定
    
     }
 
【HttpPost】    
      Public  ActionResult Edit(int id){    //TryUpdateModel的验证
      var  ablum=scoreDB.Album .Find(id);
      if(TryUpdateModel(ablum)){  //显式执行模型绑定。
      //...................................
      }
     }
 
【HttpPost】    
      Public  ActionResult Edit(int id){ 
      var  ablum=scoreDB.Album .Find(id);
     UpdateModel(album);
      if(ModelState.IsValid){  //显式执行模型绑定。
      //...................................
      }
     }
 
 
  注意:模型绑定器一旦使用新值完成对模型属性的更新,就会利用当前的模型元数据获得模型的所有验证器。asp.net mvc 运行时提供了一个验证器来与数据注解一同工作,
            这个模型验证器会找到所有的验证特性并执行它们包含的验证逻辑,模型绑定器捕获所有失败验证验证规则并将它放入模型状态中。
 
验证与模型状态:
   1.模型绑定主要的副产品是模型状态(ModelState),模型状态不仅包含了用户想放入模型属性中的所有值,也包含了每个属性相关联的错误信息。
    如果模型状态中存在问题,ModelState.IsValid就会返回False
  
 
 
 
 
 

ASP.NET MVC5中Model层开发,使用的数据注解有三个作用:

  1. 数据映射(把Model层的类用EntityFramework映射成对应的表)
  2. 数据验证(在服务器端和客户端验证数据的有效性)
  3. 数据显示(在View层显示相应的数据)

数据注解相关的命名空间如下:

  DataAnnotations名称空间中包含主要的数据注解,Schema名称空间中包含一些数据映射的数据注解,Mvc名称空间中包含字符、数组、数值长度和属性比较的数据注解,Security名称空间中包含MemberShipPassword注解特性。

 

数据映射和验证相关的数据注解:

[Required]  必填字段
[MaxLength]  指定属性中允许的数组或字符串数据的最大长度
[MinLength] 指定属性中允许的数组或字符串数据的最小长度
[StringLength]                       指定最小和最大字符长度
[Range]   指定数值范围

 

 

 

 

 

 

数据验证相关的数据注解

[Remote] 使用 jQuery 验证插件远程验证程序的特性
[FileExtension] 验证文件扩展名
[Compare] 比较两个属性的值
[RegularExpression] 使用正则表达式验证
[CustomValidation]  自定义验证方法
[DataType] 指定要与数据字段关联的附加类型的名称
[EmailAddress] 电子邮件地址(相当于[DataType(DataType.Email)])
[Phone] 电话(同上)
[CreditCard] 信用卡号码(同上)
[Url]  验证URL(同上)
[MemberShipPassword]         验证密码字段是否满足成员资格提供程序的当前密码要求

 

 

 

 

 

 

 

 

  

 

数据映射相关的数据注解:

[Key] 主键字段
[Column] 数据库列属性映射
[NotMapped] 不要创建对应的字段
[Table] 指定类将映射到的数据库表
[ForeignKey] 表示关系中用作外键的属性
[DatabaseGenerated]            指定数据库生成属性值的方式(EF不追踪属性的变化)

 

 

 

 

 

  

数据显示相关的数据注解:

[DisplayName] 指定本地化的字符串(习惯用语类)
[Display] 指定本地化的字符串(习惯用语属性)
[DisplayFormat] 设置数据字段的格式
[ReadOnly]  指定该特性所绑定到的属性是只读属性还是读/写属性
[EditAble] 指示数据字段是否可编辑
[HiddenInput] 指示是否应将属性值或字段值呈现为隐藏的 input 元素
[ScaffoldColumn]                    指定类或数据列是否使用基架
[UIHint]  指定动态数据用来显示数据字段的模板

 

 

 

 

 

  

其他

[DisplayColumn]                    将所引用的表中显示的列指定为外键列
[Description]

可视化设计器在引用组件成员时可以显示指定的说明

(命名空间:System.ComponentModel.DescriptionAttribute

 

 

 

 

1、数据验证相关的数据注解继承ValidationAttribute类,都有一个ErrorMessage属性用来显示错误提示。

如:[Required(ErrorMessage="此项不能为空")]。

2、数据映射中Int类型和DateTime类型在数据库中默认不允许为NULL,如果需要设置为NULL,使用可空类型即可(使用Int?或者DateTime?)。

 

 

posted @ 2017-07-03 08:48  奋斗的大鹏  阅读(200)  评论(0编辑  收藏  举报