0

最近MVC3を学習していて、リストビューからレコードを削除するための2つの解決策を見つけました。ただし、両方のコンポーネントが必要ですが、JavaScriptに関する知識が不足しているため、これは非常に困難です。

削除するための次の2つのリンクがあります。

@Html.ActionLink("Delete", "Delete", 
    new { id = item.ID }, new { @class = "delete-link" }) |
@Ajax.ActionLink("Delete Ajax", "Delete", "MyController",
    new {id = item.ID},
    new AjaxOptions {
        HttpMethod = "POST",
        OnBegin = "return ConfirmDone()",
        OnSuccess = "deleteConfirmation"
    })

1つ目は、次のJavaScriptを使用してレコードを削除します。

<script>
    $(function () {
        var deleteLinkObj;
        // delete Link
        $('.delete-link').click(function () {
            deleteLinkObj = $(this);  
            $('#delete-dialog').dialog('open');
            return false; 
        });

        //definition of the delete dialog.
        $('#delete-dialog').dialog({
            autoOpen: false, width: 400, resizable: false, modal: true, 
            buttons: {
                "Continue": function () {
                    $.post(deleteLinkObj[0].href, function (data) 
                    {  
                        var rowId = "#myTableItem-id-" + data.id;
                        $('.myTable').find(rowId).hide('slow');
                    });

                    $(this).dialog("close");
                },
                "Cancel": function () {
                    $(this).dialog("close");
                }
            }
        });
    });
</script>

2番目のリンクは、確認のためにこのスクリプト関数を使用します。

<script>
    function ConfirmDone() {
        return confirm("Are you sure you want delete this item?");
    }
</script>

これらのソリューションはどちらも正常に機能しますが、2番目のリンクのコーディングが好きですが、jquery-uiが最初のリンクで生成する確認ボックスが好きです。だから私はそれらを一緒にブレンドしたいと思います。

私がする必要があると思うのは、呼び出しが呼び出されたときにAjax.ActionLinkConfirmDone()最初のリンクと同じようにjqueryダイアログを表示する必要があるということです。ただし、これを作成する方法がわからず、押されたボタンに応じて、このダイアログがtrueまたはfalseを返すようにします。

どんな助けでも大歓迎です。

どうもありがとう。

4

1 に答える 1

0

数時間試してみた後、私は解決策を思いつきました。

私のリンクはこれに変わりました:

@Ajax.ActionLink("Delete", "Delete", "StruContractUser",
     new { id = item.UserID },
     new AjaxOptions {
         HttpMethod = "Delete",
         OnBegin = "JSONDeleteFile_OnBegin",
         OnComplete = "notify"
     },
new { @class = "delete-link" })

OnBeginオプションでこの関数を呼び出す:

<script type="text/javascript">
    function JSONDeleteFile_OnBegin(context) {
        return false; 
    }
</script>
于 2012-08-28T20:24:22.257 に答える