ASP.NET MVC5中的数据注解(转载)
ASP.NET MVC5中Model层开发,使用的数据注解有三个作用:
- 数据映射(把Model层的类用EntityFramework映射成对应的表)
- 数据验证(在服务器端和客户端验证数据的有效性)
- 数据显示(在View层显示相应的数据)
数据注解相关的命名空间如下:
- System.ComponentModel.DataAnnotations
- System.ComponentModel.DataAnnotations.Schema
- System.ComponentModel
- System.Web.Mvc
- System.Web.Security
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] |
可视化设计器在引用组件成员时可以显示指定的说明 |
1、数据验证相关的数据注解继承ValidationAttribute类,都有一个ErrorMessage属性用来显示错误提示。
如:[Required(ErrorMessage="此项不能为空")]。
2、数据映射中Int类型和DateTime类型在数据库中默认不允许为NULL,如果需要设置为NULL,使用可空类型即可(使用Int?或者DateTime?)。
初学ASP.NET MVC顺便总结了一下数据注解(并不包含所有的内置数据注解),每个数据注解的具体使用请查询MSDN。
来源:http://www.cnblogs.com/kerwincui/p/4375793.html
作者:天使不哭
微信号:hgmyzhl
微信公众号:小明互联网技术分享社区
CSDN:IT技术分享社区
知乎:IT技术分享社区
出处:小明互联网技术分享社区
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)