如何在 MVC 中将自定义确认对话框与 Ajax Actionlink 一起使用
How to use custom confirm dialog with Ajax Actionlink in MVC
所以我正在尝试使用 Ajax.ActionLink 为表中的每个条目创建一个删除按钮,但我无法使用默认的确认功能,我需要一个我可以自定义的功能,下面我正在使用 Boostrap Modal,但我不瘦 k我做对了,因为它是非阻塞的。
行动链接
@Ajax.ActionLink("Delete", "Delete", new { id = item.ApplicationUser.Id },
new AjaxOptions {
HttpMethod = "Delete",
OnBegin = "return confirmDeletion()"
},
new { @class = "delete-link" })
这是我尝试从模态获得响应的功能,但我认为它不起作用(我的 JS 非常低于标准(,即使它这样做,我认为它也不会停止 Ajax 调用
function confirmDeletion() {
$('#myModal').modal('show');
return document.getElementById("delete-btn").addEventListener("click", function () {
$('#myModal').modal('hide');
return false
})
return document.getElementById("cancel-btn").addEventListener("click", function () {
e.preventDefault();
$('#myModal').modal('hide')
return true
})
}
关于如何让 Ajax 调用等待一些确认的任何想法?,我看了 alertify,但看起来是同样的问题,因为它也是非阻塞
的我相信此代码的实际问题:即使您单击取消,Ajax 也会运行
添加一个Ajax.BeginForm
来发送id
以调用Delete
操作
@using (Ajax.BeginForm("Delete", null, new AjaxOptions() { HttpMethod = "GET", OnComplete = "DeleteComplete", OnFailure = "AjaxErrorPopup", OnBegin = "LoadMask(true)" }, new { id = "DeletePostForm" }))
{
@Html.Hidden("id")
}
放置删除弹出窗口的常用功能
function DeleteLinkTemplate(SubmitFormID,Value) {
return '<a class=''fa fa-times fa-lg action-icon text-danger'' href=''javascript:;'' onclick="CommonConfirmDelete(''' + SubmitFormID + ''', ' + Value + ')">';
}
function CommonConfirmDelete(SubmitFormID, Value) {
_CallbackName = SubmitFormID;
_SubmitFormValue = Value;
OpenDeleteConfirmDilog();
}
function OpenDeleteConfirmDilog() {
OpenDilog('#CommonPopupTemplate');
$("#CommonPopupTemplate .panel-title, #CommonPopupSubmit").html('Delete');
$("#CommonPopupTemplate .panel-body").html(_CommonDeleteConfirmMessage);
}
function CommonPopupSubmit_Click() {
if (_CallbackName.indexOf("#")==0||_CallbackName.indexOf(".")==0) {
$(_CallbackName + " #id").val(_SubmitFormValue);
$(_CallbackName).submit();
}
else {
window[_CallbackName](_SubmitFormValue);
}
}
- 在这里你必须从
a
标签删除中调用CommonConfirmDelete
链接 - 在当前页面中
Ajax.BeginForm
呼叫Delete
行动 发送该
formId
和您的ID
以delete
CommonConfirmDelete
在全局变量
_CallbackName
和_SubmitFormValue
中设置SubmitFormID
和Value
。使用此变量在
CommonPopupSubmit_Click
中设置
当$(_CallbackName).submit();
从自定义弹出框触发时。它执行Ajax.BeginForm
提交。所有事情都可以使用自定义确认框正常工作。
是的,确认对话框显然不会停止 ajax。OnBegin 事件通常用于在 ajax 完成时显示一些进度条或等待对话框。您在这里要做的是在单击删除按钮时调用"ConfirmDelete",而不是进行ajax调用,并在"delete-btn"的confirmDelete中甚至侦听器中进行ajax调用。以下是您在那里进行 ajax 调用的方法。
技巧:当确认为真并提交表单时触发点击事件,否则不要提交表单,而不是编写自己的 ajax 表单 在jquery中提交
注意:此示例利用 bootbox.js 使用 boostrap 显示自定义确认模式弹出窗口
@using (Ajax.BeginForm("ActionName", "ControllerName", new AjaxOptions()
{
OnBegin = "onBeginSaveFormDetail",
OnComplete = "loaderhide",
OnSuccess = "onSuccessFunction",
OnFailure = "onFailureFunction"
}))
{
//form content
<button class="btn btn-success js-submit-button" type="submit">Submit</button>
<input type="hidden" id="isconfirm" />
}
-- JavaScript
var onBeginSaveFormDetail = function (event) {
if ($("#isconfirm").val()) {
loaderfunction();
return true;
}
return showBootBoxConfirmBox($(this));
}
var showBootBoxConfirmBox = function($element){
bootbox.confirm({
title: "title",
message: "Are you sure",
buttons: {
cancel: {
label: 'Cancel',
className: 'btn btn-outline-success'
},
confirm: {
label: 'I Confirm',
className: 'btn-success'
}
},
callback: function (result) {
if (result == true) {
//set hidden value isconfirm is true as user click true
//otherwise it is false
$element.find("#isconfirm").val(true);
// find submit btn using class ".js-submit-button "
$element.find('.js-submit-button').trigger("click");
}
}
});
return false;
}
- Ajax.ActionLink-传递javascript参数
- ASP.NET MVC 4-部分视图和Ajax.Actionlink
- 我可以在 asp.net-mvc 3 中的 @Ajax.Actionlink 中传递 Javascript 变量吗?
- 将 Ajax.Actionlink OnSuccess 上的模型 id 传递给另一个 Javascript 函数
- 附加到 Ajax ActionLink 的 JQuery 函数
- 访问 ajax.actionlink “要显示的文本”
- ajax.actionlink vs JavaScript 哪个首先调用
- ajax.actionlink insertionmode insertafter for table
- 如何在 MVC 中将自定义确认对话框与 Ajax Actionlink 一起使用
- 如何在myasp.net mvc应用程序中完成Ajax.actionlink调用后显示弹出消息
- ASP.NET MVC3 Ajax.ActionLink-“条件确认”对话框
- Ajax.ActionLink value lost
- 使用Ajax.ActionLink删除后,从视图页面中删除图像
- 从Ajax ActionLink MVC3.0传递参数到Javascript方法
- Ajax.ActionLink()渲染部分视图脚本,但JavaScript代码不
- 如何在Ajax.ActionLink中获得输入的数据
- 参考OnSuccess Ajax.ActionLink上的Anchor元素
- 如何为Ajax.ActionLink应用CSS
- 在mvc4中使用ajax.actionlink会导致刷新页面
- Ajax.ActionLink triggering from Javascript?