当用户点击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调用?
答案 0 :(得分:1)
不要过分依赖预定义的ActionLink方式。存档的方法有两种:
Microsoft unobstrucive Ajax方法将自动添加到链接 - 您必须使用jquery删除它们并自己执行ajax调用。但是你必须在添加后用jquery删除处理程序 - 这可能很奇怪,我不知道该怎么做。
在您的情况下不要使用@Ajax.ActionLink
- 只需使用@Url.Action
构建您自己的标记,并将您的onclick处理程序设置为您的标记。但你也必须自己做ajax调用。
在两种情况下,建立自己的ajax调用只需更改您的确认:
$('.confirm-this').click(function () { $.post(link) });