Назначить ValidationResult для конкретного поля? - PullRequest
11 голосов
/ 20 декабря 2011

Я пытаюсь использовать IValidatableObject для проверки значений формы относительно друг друга.Я хотел бы назначить ValidationResult для определенного поля, чтобы я мог отобразить сообщение об ошибке рядом с этим полем.

Например, я могу захотеть, чтобы пользователи дважды вводили пароли, и у меня не получилась проверка, если второе не совпадает с первым, а затем рядом со вторым отображается сообщение об ошибке.

Однако, похоже, я могу назначать ошибки только на уровне модели;под уровнем модели я имею в виду ошибку, которая будет отображаться с @Html.ValidationSummary(true) и которая не привязана к конкретному полю модели.

Я проверил объявление для ValidationResult, и я не вижу никакихсвойство или метод, который выглядит полезным для этого.Итак, может ли кто-нибудь показать мне способ присвоения ValidationResult определенному полю из метода Validate объекта IValidateableObject или подтвердить, что это невозможно сделать?

(ПРИМЕЧАНИЕ. Я НЕ ищудля обхода. ПОЖАЛУЙСТА - нет ответов, например, о фильтрах, которые заботятся о примере с паролем. Я только хочу знать конкретно об ограничениях IValidateObject.)

1 Ответ

24 голосов
/ 20 декабря 2011

Возможно, ValidationResult имеет перегрузку, которая принимает IEnumarable строки, свойства должны быть связаны.

Пример.

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Password != PasswordConfirmation)
            yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...