MVC驗證07-自定義Model級別驗證

Darren Ji發表於2014-03-04

在一般的自定義驗證特性中,我們通過繼承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級別就自定義了驗證規則。

相關文章