2010-09-13 2 views
3

У меня возникли некоторые проблемы с пониманием логики проверки опережать DataAnnotation проверки:ASP.NET MVC: DataAnnotation выполнение проверки порядка

С помощью следующей модели:

[AlwaysInvalid] 
public class TestModel 
{ 
    [Required] 
    public string Test { get; set; } 
} 

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] 
public class AlwaysInvalidAttribute : ValidationAttribute 
{ 
    private readonly object typeId = new object(); 

    public AlwaysInvalidAttribute() : base("Fail !") {} 

    public override object TypeId { get { return this.typeId; } } 

    public override bool IsValid(object value) 
    { 
     return false; 
    } 
} 

Сообщение об ошибке AlwaysInvalidAttribute получает отображается, только если Обязательный атрибут действителен: я не могу получить оба сообщения одновременно. Кто-нибудь понял, почему? Я думаю, что это проблема с DefaultModelBinder, но до сих пор не нашли, где и почему.

ответ

4

Валидаторы уровня класса работают только в том случае, если все валидаторы на уровне свойств были успешными. Это поведение кодируется в классе ModelValidator.

Смежные вопросы