1

我正在使用 jqgrid并使用内联编辑模式,无法弄清楚如何从服务器端验证规则将错误返回给客户端

在持久化到数据库之前,我在服务器端使用流利的验证进行验证。这很好用,只是我看不到在内联模式下编辑时如何返回错误。如果我不将值保存到数据库中,客户端仍然会显示应该被拒绝的值。

在有人提交内联编辑后返回错误的推荐方法是什么,这样您会在客户端收到一些显示错误的弹出窗口,并且它将保持编辑状态?


注意:下面的这张图片是为了回应奥列格的评论和下面的回答

在此处输入图像描述

4

1 回答 1

2

推荐的方法是在提交错误数据的响应中使用任何 HTTP 错误代码,并在响应正文中返回错误描述。如果您需要一些更具体的操作,例如显示另一个带有错误信息的对话框,将焦点设置在字段上,用 CSS 类“ui-state-error”标记某些字段或类似的东西,您应该使用errorfunc回调函数。

如果restoreAfterErrorfalse内联编辑将继续。

更新:我在评论中提到服务器应该生成错误消息作为响应。在 ASP.NET MVC 的情况下,默认消息是您作为第一张图片发布的 HTML 文本。如果您使用HandleJsonExceptionAttribute我在旧答案中描述的错误消息,则错误消息将被序列化为 JSON,但它包含您不需要显示的附加信息(如StackTrace)。因此,您应该使用editRowsaveRow的errorfunc参数来解码服务器响应。您可以使用已经引用的答案,也可以直接使用该函数: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'});
}
于 2012-01-22T19:00:04.157 回答