模型验证(3)

自定义绑定类型

1.定义类

    public class MustBeTrueAttribute:ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            return value is bool && (bool) value;
        }
    }
    public class FutureDateAttribute:RequiredAttribute
    {
        public override bool IsValid(object value)
        {
            return base.IsValid(value)&&value is DateTime&&((DateTime)value)>DateTime.Now;
        }
    }

2.调用

    public class Appointment {

        [Required]
        public string ClientName { get; set; }

        [DataType(DataType.Date)]
        [FutureDate(ErrorMessage="Please enter a date")]
        public DateTime Date { get; set; }

        [MustBeTrue(ErrorMessage="You must accept the terms")]
        public bool TermsAccepted { get; set; }
    }

Model验证

1.添加类

  public class AppointmentValidationAttribute:ValidationAttribute
    {
        public AppointmentValidationAttribute()
        {
            ErrorMessage = "Joe can not book appointments on mondays";
        }
        public override bool IsValid(object value)
        {
            Appointment app = value as Appointment;
            if(app==null||string.IsNullOrEmpty(app.ClientName)||app.Date==null)
            {
                return true;
            }
            else
            {
                return !(app.ClientName == "Joe" && app.Date.DayOfWeek == DayOfWeek.Monday);
            }
        }
    }

 2.调用

    [AppointmentValidationAttribute]
    public class Appointment {

        [Required]
        public string ClientName { get; set; }

        [DataType(DataType.Date)]
        [FutureDate(ErrorMessage="Please enter a date")]
        public DateTime Date { get; set; }

        [MustBeTrue(ErrorMessage="You must accept the terms")]
        public bool TermsAccepted { get; set; }
    }

 创建自定义验证模型

 public class Appointment:IValidatableObject {

        public string ClientName { get; set; }
        [DataType(DataType.Date)]
        public DateTime Date { get; set; }
        public bool TermsAccepted { get; set; }
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            List<ValidationResult> errors = new List<ValidationResult>();
            if(string.IsNullOrEmpty(ClientName))
            {
                errors.Add(new ValidationResult("Please enter your name"));
            }
            if(DateTime.Now>Date)
            {
                errors.Add(new ValidationResult("Please enter a date in the future"));
            }
            if(errors.Count==0&&ClientName=="Joe"&&Date.DayOfWeek==DayOfWeek.Monday)
            {
                errors.Add(new ValidationResult("Joe can not book appointments on Monday"));
            }
            if(!TermsAccepted)
            {
                errors.Add(new ValidationResult("You must accept the terms"));
            }
            return errors;
        }
    }

  

 

 

 

posted @ 2012-11-12 15:56  bradleydan  阅读(126)  评论(0)    收藏  举报