проверка на стороне сервера, как передать ошибки для просмотра в MVC? - PullRequest
4 голосов
/ 28 января 2009

Используя .net MVC, я выполняю некоторую проверку на стороне сервера в своем действии, которое обрабатывает сообщение формы.

Что такое хороший метод для передачи ошибок обратно в представление?

Я подумываю создать коллекцию ошибок, затем добавить эту коллекцию в мои ViewData и затем каким-то образом сплести некоторый JavaScript (используя jQuery) для отображения ошибки.

Было бы хорошо, если бы в jQuery был какой-то автоматический способ отображения ошибки, так как это распространенный шаблон.

Что ты делаешь?

Ответы [ 5 ]

9 голосов
/ 28 января 2009

Вы хотите добавить ошибки в ModelState, как указывает @Mehrdad.

...
catch (ArgumentOutOfRangeException e)
{
    ModelState.AddModelError( e.ParamName, e.Message );

    result = View( "New" );
}

И включите ValidationSummary в свое представление

<%= Html.ValidationSummary() %>
1 голос
/ 28 января 2009

ViewData.ModelState предназначен для передачи информации о состоянии (ошибки) от контроллера к представлению.

0 голосов
/ 29 января 2009

Я использую встроенный ModelState объект, хранящий мои ошибки проверки. Валидация выполняется либо в привязке, либо вручную, путем добавления ошибок, подобных этой:

ModelState.AddModelError("LastName","Last name can't be Doe").

Чтобы поддержать сценарий публикации формы ajax, я создал метод расширения для ModelStateDictionary GetErrors(), который возвращает легкий объект ModelStateErrorsDTO (упрощенная версия ошибок проверки состояния модели, подходящая для сериализации json). *

Когда сообщение формы представляет собой запрос ajax, я возвращаю сериализованный json ModelStateErrorsDTO.

Со стороны jquery я написал вспомогательную функцию, которая помещает ошибки проверки рядом с соответствующими полями ввода, используя классы mvc css по умолчанию, т.е. input-validation-error.

Таким образом, вы сможете создавать ненавязчивые ajaxforms с сообщениями проверки.

Надеюсь, это поможет.

0 голосов
/ 28 января 2009

Не совсем уверен, что это то, что вы ищете, но есть очень простой в использовании плагин проверки формы для jquery на http://bassistance.de/jquery-plugins/jquery-plugin-validation/.. Он автоматически отображает сообщения об ошибках красным цветом.

Конечно, вы все равно должны выполнить проверку на стороне сервера и вернуть ошибки. Тванфоссон показал вам, как в своем ответе.

0 голосов
/ 28 января 2009

Да, это хороший способ, но в любом случае вы можете поместить сообщение об ошибке в свой собственный ViewData ["key"] = "Ошибка на странице ... bla ... bla ... bla ..."

<% if (!string.IsNullOrEmpty(ViewData["key"]+"")) { %>

<div>
Yor customized error template
</div

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