【问题标题】:MVC3 Ajax link confirmation dialog using jquery-ui dialog box使用 jquery-ui 对话框的 MVC3 Ajax 链接确认对话框
【发布时间】:2012-08-28 12:48:35
【问题描述】:

我最近一直在学习 MVC 3,我找到了两种从列表视图中删除记录的解决方案。但是我想要它们的组件,但是我缺乏 javascript 知识使得这非常困难。

我有这两个链接要删除:

@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"
    })

第一个使用以下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>

第二个链接使用这个脚本函数进行确认:

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

现在这两种解决方案都可以正常工作,但是我更喜欢第二个链接的编码,但我喜欢 jquery-ui 在第一个链接中生成的确认框。所以我想把它们混合在一起。

我认为我需要做的是当Ajax.ActionLink 调用ConfirmDone() 时,我需要像处理第一个链接一样显示一个jquery 对话框。但是我不确定如何生成它并允许此对话框根据按下的按钮返回真或假。

任何帮助将不胜感激。

非常感谢。

【问题讨论】:

    标签: javascript ajax asp.net-mvc-3 jquery-ui


    【解决方案1】:

    经过几个小时的尝试,我想出了一个解决方案:

    我的链接变成了这个:

    @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>
    

    【讨论】:

    • 你的意思是返回 false 不显示默认确认对话框,而是显示你想要的 jquery 对话框
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多