Используя Ajax.ActionLink, как я могу отобразить пользовательское модальное подтверждение? - PullRequest
2 голосов
/ 24 февраля 2012

У меня есть требование показывать пользовательское модальное подтверждение jQuery, когда пользователь нажимает на Ajax ActionLink. Однако, когда я пытаюсь добавить это в ссылку Ajax, вызов ajax продолжается и не позволяет подтверждению остановить вызов. Я пытался использовать функцию OnBegin, но когда я вызываю warnDefault, он выдает ошибку метода не поддерживается. Если я верну 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 Ответ

1 голос
/ 24 февраля 2012

Не слишком полагайтесь на предопределенный путь ActionLink.Есть два способа заархивировать это:

  1. Незаменимые методы Ajax от Microsoft будут автоматически добавлены в ссылку - вы должны удалить их с помощью jquery и выполнить вызов ajax самостоятельно.Но вы должны удалить обработчик с помощью jquery после того, как они были добавлены - это может быть странно, и я не знаю, когда именно это сделать.

  2. Не используйте @Ajax.ActionLinkв вашем случае - просто создайте свой собственный тег с @Url.Action и установите обработчик onclick для вашего тега.Но вы также должны выполнить вызов ajax самостоятельно.

В обоих случаях для создания собственного вызова ajax просто измените свое подтверждение:

$('.confirm-this').click(function () { $.post(link) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...