Подтвердить что ты не робот

Назначить ValidationResult для определенного поля?

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

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

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

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

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

4b9b3361

Ответ 1

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

Пример.

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Password != PasswordConfirmation)
            yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    }