MVC验证07-自定义Model级别验证

在一般的自定义验证特性中,我们通过继承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级别就自定义了验证规则。

posted @ 2014-03-04 23:14  Darren Ji  阅读(926)  评论(0编辑  收藏  举报

我的公众号:新语新世界,欢迎关注。