模型类的数据注解

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),就是模型绑定器来检查数据是否合法,它将 内置的属性同时支持客户商、浏览器的验证。如果错误发生,先是

时间: 2024-11-24 12:53:52

模型类的数据注解的相关文章

ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类.指定数据库连接字符串以及创建一个数据库.最后,我们还将添加视图和控制器来管理和显式产品和分类数据. 注意:如果你想按照本章的代码编写示例,你必须完成第一章或者直接从www.apress.com下载第一章的源代码. 2.1 添加模型类 Entity Framework的代码优先模式允许我们从模型类创

C# Web 数据注解Data Annotations、模型状态ModelState、数据验证

C#中的模型状态与数据注解,为我们提供了很便利的请求数据的验证. 1. ModelState ModelState在进行数据验证的时候很有用的,它是: 1)验证数据,以及保存数据对应的错误信息. 2)微软的一种DRY(Don't Repeat Yourself)设计,通过ModelState可以做服务端验证,同时可以配合jquery validation生成前端数据验证 2. 数据注解Data Annotations.数据验证 如果我们想要添加数据验证,首先要创建我们的数据验证实体. 比如,我们

ASP.NET MVC5(四):数据注解和验证

前言 用户输入验证的工作,不仅要在客户端浏览器中执行,还要在服务端执行.主要原因是客户端验证会对输入数据给出即时反馈,提高用户体验:服务器端验证,主要是因为不能完全信任用户提供的数据.ASP.NET MVC框架提供了强大的验证组件帮助我们处理这些繁杂的问题. 数据验证 验证注解的使用 验证注解特性定义在命名空间System.ComponentModel.DataAnnotations中,它们提供了服务器端验证的功能,当在模型的属性上使用时,框架也支持客户端验证.常用特性简介: Required当

Asp.net MVC 数据注解与验证

数据注解特性定义在名称空间System.ComponentModel.DataAnnotations中(有些特性定义在其他名称空间中),它们提供了服务器端验证的功能,当在模型的属性上使用这些特性时,框架也支持客户端验证. 常用特性 1.Required --必填字段示例:[Required]2.StringLength --字符长度限制示例:[StringLength(16,MinimumLength=3)]3.RegularExpression --正则表达式验证示例:[RegularExpr

数据注解和验证 – ASP.NET MVC 4 系列

       不仅在客户端浏览器中需要执行验证逻辑,在服务器端也需要执行.客户端验证能即时给出一个错误反馈(阻止请求发送至服务器),是时下 Web 应用程序所期望的特性.服务器端验证,主要是因为来自网络的信息都是不可信任的.        当在 ASP.NET MVC 设计模式上下文中谈论验证时,主要关注的是验证模型的值.ASP.NET MVC 验证特性可以帮助我们验证模型值,且这样验证特性是可扩展的,所以我们可以采用任意想要的方式构建验证模式,默认方法是一种声明式验证,即数据注解特性.    

asp.net mvc3 数据验证(三)—自定义数据注解

原文:asp.net mvc3 数据验证(三)-自定义数据注解         前两节讲的都是asp.net mvc3预先设定的数据注解,但是系统自由的数据注解肯定不适合所有的场合,所以有时候我们需要自定义数据注解. 自定义数据注解有两种,一种是直接写在模型对象中,这样做的好处是验证时只需要关心一种模型对象的验证逻辑,缺点也是显而易见的,那就是不能重用. 还有一种是封装在自定义的数据注解中,优点是可重用,缺点是需要应对不同类型的模型. 现在我们以封装在自定义数据注解中的方法为例看下如何在asp.

MVC 5 数据注解

ASP.NET MVC5中的数据注解(转载) ASP.NET MVC5中数据注解原理: 1.asp.net MVC 的验证特性是由模型绑定器.模型元数据.模型验证器.模型状态组成的协调系统的一部分. 2.注解原理和步骤:  验证与模型绑定:   (1).ASP.NET  MVC 默认情况下,在模型绑定时执行验证逻辑.如果控制器中的操作方法带有参数时,就会隐式地执行模型绑定.或者是利用控制器的UpdateModel或者            TryUpdateModel方法显式执行模型绑定.  

【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 数据库连接字符串 上一篇文章中,我们使用MVC的

Hibernate实体类与数据表字段默认值之间的优先关系

在日常的应用开发过程中,我们一般都会使用对象关系映射来通过面向对象的编程模型来解决数据库的操作,我们生产过程当中使用较多的当属Hibernate框架了,他非常灵活,为我们提供了多种方式来实现数据层的操作与管理.通过实体类与数据表的映射,实体类对应表,属性对应字段就可以将我们想要生产的对象赋值到数据库,但是我们有时也需要查询对象,但是无论什么操作,都必须通过实体类来传递数据. 有时我们数据库有一些字段是数据库自动赋值,禁止用户通过程序修改的,如记录生成时间,那么如果你实体类按照正常情况下,你为了查