0

私はmvcグリッドを持っています。

各レコードの横には削除ボタンがあります。

この削除ボタンはアクション DeleteRecord に対応します。アクションはこのレコードを削除し、RedirectToAction("MyGrid"); を実行します。

これはかなりうまく機能しますが、厄介なのは、私のリダイレクト アクションによってページ全体がリロードされることです。これは私が避けようとしているものですが、これを回避する方法がわかりません。

私はこのように始めます。

/MyApp/MyGrid  => click delete
/MyApp/DeleteRecord => redirect
/MyApp/MyGrid => full reload of page

おそらくこれは不可能ですが、オーバーライドされたアクションと異なるアクション名のアクションを使用してこれを試みましたが、これは私の完全なリロードを解決しませんでした. 私はMVCが初めてなので、これは不可能かもしれません。クライアント側で ajax.post を実行しただけで、これを回避できるのではないかと考えていましたが、考えれば考えるほど、同じリダイレクトを実行する同じアクションになってしまう可能性が高くなります。

この状況を回避する方法についてのアイデアはありますか?

4

1 に答える 1

0

私は実際に、グリッドのコールバック関数とグリッド関数のインライン削除に結び付けただけで、うまくいきました。非常にハックですが、インライン グリッドの削除コードに期待することで、投稿全体を停止します。ただし、コールバック JavaScript ルーチンが順番に実行されるとは限りません。; o

s.SettingsEditing.DeleteRowRouteValues = new { Controller = "Home", Action = "DeleteRecordGrid" };

s.ClientSideEvents.EndCallback = "function(s,e) { OnEndCallback(s, e, 'delete') }";

<script type="text/javascript">

    function deleteWithoutPostback(eVisibleIndex) {
        var okToDelete = confirm("Do you really want to delete this record?");
        if (okToDelete == true) {
            myGrid.DeleteRow(eVisibleIndex);
            myGrid.ClearFilter();
        } else {
            return;
        }
    }

    function OnEndCallback(s, e, callType) {
        if (typeof callType == 'undefined') {
            if (callType == 'delete') {
                myGrid.Refresh();
            }
        }
    }

</script>
于 2013-04-30T22:41:41.730 に答える