8.1 自定义验证属性
Posted 长颈鹿的围巾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.1 自定义验证属性相关的知识,希望对你有一定的参考价值。
前面讲的都是预先设定的数据注解,但是系统自由的数据注解肯定不适合所有的场合,所以有时候我们需要自定义数据注解。自定义数据注解有两种,一种是直接写在模型对象中,这样做的好处是验证时只需要关心一种模型对象的验证逻辑,缺点也是显而易见的,那就是不能重用。还有一种是封装在自定义的数据注解中,创建自己的Data Annotations Validation Attribute,优点是可重用,缺点是需要应对不同类型的模型。
现在我们以封装在自定义数据注解中的方法为例看下如何在asp.net mvc3中自定义数据注解以及使用。首先,所有的数据注解都应继承于System.ComponentModel.DataAnnotations命名空间中的ValidationAttribute类。重写其protected virtual ValidationResult IsValid(object value, ValidationContext validationContext);
public class ValidEmailAddressAttribute : ValidationAttribute
{
public ValidEmailAddressAttribute()
{
// Default message unless declared on the attribute
ErrorMessage = "{0} must be a valid email address.";
}
public override bool IsValid(object value)
{
// You might want to enhance this logic...
string stringValue = value as string;
if (stringValue != null)
return stringValue.Contains("@");
return true;
}
}
public class Appointment
{
[Required(ErrorMessage = "Please enter your name")]
[StringLength(50)]
public string ClientName { get; set; }
[DataType(DataType.Date)]
[Required(ErrorMessage = "Please choose a date")]
public DateTime AppointmentDate { get; set; }
[ValidEmailAddress]
public String Email { get; set; }
}
以上是关于8.1 自定义验证属性的主要内容,如果未能解决你的问题,请参考以下文章