模型验证(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;
}
}

浙公网安备 33010602011771号