Почему только IValidatableObject.Validate вызывается, если проверка свойства проходит?

В моей модели кажется, что Validate () вызывается только ПОСЛЕ того, как оба свойства проходят проверку.

public class MyModel : IValidatableObject 
{
    [Required]
    public string Name { get; set;}

    [Required]
    public string Nicknames {get; set;}

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if(Nicknames != null && Nicknames.Split(Environment.NewLine.ToCharArray()).Count() < 2)
            return yield result new ValidationResult("Enter at least two nicknames, new [] { "Nicknames" });
    }
}

Когда пользователь вводит одну строку текста в текстовую область Псевдонимы , но оставляет текстовое поле Имя пустым, только сообщение об ошибке Требуется для Имя свойство отображается. Сообщение об ошибке, которое должно отображаться при использовании функции Validate () , никогда не появляется.

Только после ввода имени в текстовое поле Имя и некоторого текста в Текст Псевдонимов - это вызванная функция Validate () .

Так оно и должно работать? Кажется странным, что пользователю отображается сообщение об ошибке на следующей странице, когда ошибка возникает на текущей странице.

12
задан Omar 22 January 2011 в 17:41
поделиться