Используя jqgrid, каков наилучший способ вернуть ошибки проверки на стороне сервера при использовании встроенного редактирования? - PullRequest
1 голос
/ 22 января 2012

Я использую jqgrid и использую встроенный режим редактирования и не могу понять, как вернуть ошибки клиенту из правил проверки на стороне сервера

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

Каков рекомендуемый способ возврата ошибки после того, как кто-то совершит встроенное редактирование, чтобы вы получили всплывающее окнона стороне клиента показывает ошибку, и она останется в состоянии редактирования?


ПРИМЕЧАНИЕ: это изображение ниже в ответ на комментарий Олега и ответ ниже

enter image description here

1 Ответ

2 голосов
/ 22 января 2012

Рекомендуется использовать любой код ошибки HTTP в ответе при отправке неверных данных и вернуть описание ошибки в теле ответа.Если вам нужно более конкретное действие, такое как отображение другого диалога с информацией об ошибке, установка фокуса на поле, пометка некоторых полей с помощью класса CSS 'ui-state-error' или что-то подобное, вам следует использовать errorfunc функцию обратного вызова.

Если restoreAfterError равно false, редактирование будет продолжено.

ОБНОВЛЕНО : я упоминаю в комментариях, что сервер должен выдать сообщение об ошибке в качестве ответа.В случае ASP.NET MVC сообщением по умолчанию является текст HTML, который вы разместили в качестве первого изображения.Если вы используете HandleJsonExceptionAttribute, который я описал в моем старом ответе , сообщение об ошибке будет сериализовано как JSON, но оно содержит дополнительную информацию, которую вам не нужно отображать (например, StackTrace).Поэтому вы должны использовать errorfunc параметр editRow или saveRow для декодирования ответа сервера.Вы можете либо использовать decodeErrorMessage из уже указанного ответа , либо напрямую использовать функцию $.parseJSON:

errorfunc: function(rowid, res) {
    var errorText = $.parseJSON(res.responseText).Message;
    $.jgrid.info_dialog($.jgrid.errors.errcap,
        '<div class="ui-state-error">' + errorText + '</div>',
        $.jgrid.edit.bClose,
        {buttonalign: 'right'});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...