首页 > 代码库 > 8.1 自定义验证属性
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 = http://www.mamicode.com/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 自定义验证属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。