使用Ajax.ActionLink,如何显示自定义模式确认?

时间:2012-02-24 03:09:26

标签: jquery ajax asp.net-mvc

当用户点击Ajax ActionLink时,我需要显示自定义模式jQuery确认。但是,当我尝试将其添加到Ajax链接时,ajax调用将继续,并且不允许确认停止调用。我尝试过使用OnBegin函数,但是当我调用preventDefault时它会抛出一个不支持的方法错误。如果我返回false,则不允许任何方式继续通话。有人知道如何实现这个目标吗?

以下是我尝试将确认添加到的链接:

<div class="sign">@Model.Email | @Ajax.ActionLink("Sign Out", "SignOut", new { area = "", controller = "Account" }, new AjaxOptions { HttpMethod = "POST" })</div>

这是我正在尝试执行的代码:

    $('#MainNav ul li a, .header-top a').click(function (e) {
        e.preventDefault();
        var link = $(this).attr('href');
        $('.confirm-dialog .confirm-this').attr('href', link);

        $('.confirm-dialog').dialog({
            modal: true,
            draggable: false,
            overlay: { opacity: 0.8 },
            resizable: false,
            width: 400,
            open: function () {
                $('.close-dialog').click(function (e) { e.preventDefault(); $(this).parents('.ui-dialog').remove(); });
                $('.confirm-this').click(function () { });
            }
        });
    });

非常感谢任何帮助。我已经做了很多搜索并试图解决这个问题,但我仍然遇到了同样的基本问题。如何在用户单击确认之前停止Ajax调用?

1 个答案:

答案 0 :(得分:1)

不要过分依赖预定义的ActionLink方式。存档的方法有两种:

  1. Microsoft unobstrucive Ajax方法将自动添加到链接 - 您必须使用jquery删除它们并自己执行ajax调用。但是你必须在添加后用jquery删除处理程序 - 这可能很奇怪,我不知道该怎么做。

  2. 在您的情况下不要使用@Ajax.ActionLink - 只需使用@Url.Action构建您自己的标记,并将您的onclick处理程序设置为您的标记。但你也必须自己做ajax调用。

  3. 在两种情况下,建立自己的ajax调用只需更改您的确认:

    $('.confirm-this').click(function () { $.post(link) });