Рекомендуется использовать любой код ошибки 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'});
}