1

jqgridを使用し、インライン編集モードを使用していますが、サーバー側の検証ルールからクライアントにエラーを返す方法がわかりません

サーバー側で流暢な検証を使用して、データベースに永続化する前に検証します。これはうまく機能しますが、インライン モードで編集するときにエラーを返す方法がわかりません。値をデータベースに永続化しない場合でも、クライアントは拒否する必要がある値を表示します。

誰かがインライン編集をコミットした後にエラーを返し、クライアント側でエラーを示すポップアップが表示され、編集状態のままになるようにするための推奨される方法は何ですか?


注: 下のこの画像は、以下の Oleg のコメントと回答に対応したものです。

ここに画像の説明を入力

4

1 に答える 1

2

推奨される方法は、間違ったデータの送信に対する応答で HTTP エラー コードを使用し、応答の本文でエラーの説明を返すことです。エラー情報を含む別のダイアログを表示する、フィールドにフォーカスを設定する、CSS クラス 'ui-state-error' でいくつかのフィールドをマークするなど、より具体的なアクションが必要な場合は、errorfuncコールバック関数を使用する必要があります。

の場合、インライン編集が続行されますrestoreAfterErrorfalse

更新: サーバーが応答としてエラー メッセージを生成する必要があることをコメントで述べています。ASP.NET MVC の場合、デフォルトのメッセージは、最初の画像として投稿した HTML テキストです。古い回答HandleJsonExceptionAttributeで説明したものを使用すると、エラー メッセージは JSON としてシリアル化されますが、表示する必要のない追加情報が含まれています ( . したがって、サーバーの応答をデコードするには、 editRowまたはsaveRowのerrorfuncパラメータを使用する必要があります。すでに参照されている回答から使用するか、関数を直接使用できます。StackTracedecodeErrorMessage$.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 に答える