Как заставить Html.ValidationMessage для работы с двумя свойствами? - PullRequest
0 голосов
/ 25 марта 2010

В настоящее время у меня есть пользовательский атрибут, нацеленный на класс, такой как:

[PropertiesMustMatch("Password", "PasswordConfirm", ErrorMessage = "Passwords must match!")]

Проблема в том, что in отображается только в сводке проверки и не выделяет неправильные текстовые поля. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 26 марта 2010

Проверка на уровне модели означает, что механизм связывания Mvc по умолчанию не знает, какие свойства вы проверяете.

Asp.net Mvc не имеет встроенной поддержки для отображения ошибок на уровне модели и выделения свойств в представлении для этого валидатора.

Я мог бы сделать что-то подобное для достижения визуального результата

<%var passwordCssClass = ViewData.ModelState["Key"] != null && ViewData.ModelState["Key"].Errors.Any() ? "model-error" : string.Empty; %>
<%= Html.PasswordFor(x => x.Password, new { @class = passwordCssClass })%>
<%= Html.PasswordFor(x => x.PasswordConfirm, new { @class = passwordCssClass })%>

Вы должны проверить ModelState на наличие ключа, который ModelBinder использует для ошибки проверки на уровне модели. Замените «Ключ» выше на то, что вы найдете, а затем измените класс css на ваш класс css ошибки.

Это не код производственного уровня, вам нужно настроить Any () и убедиться, что это правильное сообщение об ошибке, которое вы ищете, и, возможно, даже переместить логику для этого в контроллере и предоставить представление с CssClass следует использовать через вашу модель. Но, надеюсь, это поможет вам.

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