Asp.Net Mvc验证属性简单介绍

Table of Contents

1 说明

Datannotations是一种基于注解的验证方式,以提供给Model Validation时的额外的引用信息.

属性名称 说明
Compare 比较两个属性
CustomValidation 自定义验证方法
DataType 指定与数据字段产生关联的其他类型名称
Display 指定显示字段名的字符串,默认为字段名
Key 表示唯一识别实体的一个或多个属性
MaxLength 指定属性中所允许的数据或字符串数据的最大长度
MinLength 指定属性中所允许的数据或字符串数据的最小长度
Range 指定数据字段值的数值范围条件约束
RegularExpression 指定数据字段值必须符合指定的正则表达式
Required 指出数据字段为必填
ScaffoldColumn 指定类或数据列是否使用基架
StringLength 指定数据字段中允许的最小和最大字符长度
UIHint 指定Dynamic Data用来显示数据字段的模板或用户控件

2 验证属性例子

2.1 Compare属性类

在一些重要的表单,经常会要求用户端重复确认(Double Check)是否输入错误,即可利用Compare属性来进行比较.

[Compare(Email2¨)]
public string Email{get;set;}

public string Email2{get;set;}

2.2 DataType属性类

属性名称 说明
CreditCard 指定数据字段值输入信用卡卡号
EmailAddress 验证电子邮件地址
EnumData 让.NET Framework枚举类型对应到数据列
FileExtentions 验证文件的扩展名
Phone 指定数据字段值为正确的电话号码
Url 提供Url验证

在.NET Framework 3.5 SP1中提供了一个DataType属性类,在4.0/4.5中进行了多个继承自DataTypeAttribute的类,上面是汇总:

[DataType(DataType.EmailAddress)]
public string Email{get;set;}

2.3 Range属性类

Range属性类定义字段的范围(指定最大值和最小值),它有三个构造函数:

  • RangeAttribute(Double,Double))
  • RangeAttribute(Int32,Int32)
  • RangeAttribute(Type,String,String)

前两个重载针对数值进行处理,第一个参数指定最小值,第二个参数指定最大值.

[Display(Name =¨库存¨)]
[Range(0,1024,ErrorMessage =¨{0}必须介于{1}到{2}之间¨ ]
public Nullable<short> UInitsInStock{get;set;}

Range属性类的第三个重载属性比较特别,它可以指定特定类型(Type)的范围,通常只针对日期(DateTime)类型进行处理.

[Range(typeof(DateTime),¨2017-06-01,¨2017-06-30¨]
public DateTime SellEndDate{get;set;}