Сосредоточиться на ошибках модели ASP.NET MVC - PullRequest
7 голосов
/ 07 апреля 2009

У меня есть модель, которая выполняет некоторую проверку валидации и добавляет ошибки в ModelState:

ViewData.ModelState.AddModelError("mycontrol", "message")

Они хорошо отображаются со стороны вида, но есть ли способ установить фокус на элемент управления, соответствующий сообщению проверки? Прямо сейчас страница обновляется и остается в верхней части страницы, поэтому, если ошибка приближается к концу страницы, для пользователя не очевидно, что произошло.

Примечание. Другим решением было бы отображение ValidationSummary списка ошибок в верхней части страницы, но я так и не смог заставить его что-либо отобразить. Все мои ошибки отображаются через ValidationMessage.

Редактировать: Я нашел мою проблему с ValidationSummary. У меня была разметка:

<% Html.ValidationSummary()%>

который должен был быть:

<%=Html.ValidationSummary()%>

Я все еще хотел бы знать, как привязаться к полю с ошибкой.

Ответы [ 2 ]

29 голосов
/ 07 апреля 2009

Некоторое jquery совершенство, чтобы перейти к первому вводу с ошибкой. Хитрость заключается в том, что вам нужно получить базовый элемент DOM, ПРЕЖДЕ ЧЕМ вы вызываете focus (), поскольку метод focus () объекта jQuery запускает событие focus вместо того, чтобы придавать фокус элементу.

<script type='text/javascript'>
    $(document).ready( function()
    {
       var input = $('.input-validation-error:first');

       if(input)
       {
           input.focus();
       }
    });
</script>
1 голос
/ 07 апреля 2009

Вы можете использовать JavaScript, чтобы найти элементы ввода на странице, в которые добавлен HTML-класс проверки MVC (input-validation-error), и переместить карат в первый. Это / следует / переместить экран к этому элементу, хотя я не проверял его.

Библиотека JS, такая как jQuery, сделает это просто.

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