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 自定义验证属性的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

为动态创建的 Android 片段提供自定义属性值

使用数据注释和代码的自定义验证属性

Xcode自定义代码块

在片段活动中显示自定义对话框

Wix - 自定义操作返回代码 - 处理