在一般的自定义验证特性中,我们通过继承ValidationAttribute,实现IClientValidatable,只能完成对某个属性的自定义验证。
使用IValidatableObject可以完成Model级别的验证。
□ 实现IValidatableObject接口的Model
public class RegisterModel : IValidatableObject
{public int RegisterCount{get;set;}
public int Qutoa{get;set;}
//实现IValidatableObject接口方法,实现自定义验证 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { var results = new List<ValidationResult>(); if (RegisterCount > Quota) {results.Add(new ValidationResult("报名人数已经超过名额限制", new string[] { "RegisterCount" }));
}
if (RegisterCount>3) {results.Add(new ValidationResult("单次最多报名三位学员", new string[] { "RegisterCount" }));
}
return results;}
}
可见,在Model级别就自定义了验证规则。
MVC验证07-自定义Model级别验证,布布扣,bubuko.com
原文:http://www.cnblogs.com/lonelyxmas/p/3812885.html