ASP.NET MVC: порядок выполнения проверки DataAnnotation - PullRequest
3 голосов
/ 13 сентября 2010

У меня возникли проблемы с пониманием логики проверки, выполняющей валидацию 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 отображается только в том случае, если атрибут Required действителен:Я не могу получить оба сообщения одновременно.Кто-нибудь понял, почему?Я думаю, что это проблема с DefaultModelBinder, но до сих пор не нашел, где и почему.

1 Ответ

4 голосов
/ 14 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...