Asp.net mvc 在ASP.NET中将Javascript引导框与Ajax.BeginForm一起使用
在查看页面中:Asp.net mvc 在ASP.NET中将Javascript引导框与Ajax.BeginForm一起使用,asp.net-mvc,asp.net-ajax,ajaxform,bootbox,Asp.net Mvc,Asp.net Ajax,Ajaxform,Bootbox,在查看页面中: @using (Ajax.BeginForm("UpdateAccount", "AccountInfo", new AjaxOptions { HttpMethod = "POST", AllowCache = false, OnSuccess = "accountUpdateRequestSuccess", OnFailure = "formSubmissionFailed", OnBegin = "validateAccountInf
@using (Ajax.BeginForm("UpdateAccount", "AccountInfo", new AjaxOptions {
HttpMethod = "POST",
AllowCache = false,
OnSuccess = "accountUpdateRequestSuccess",
OnFailure = "formSubmissionFailed",
OnBegin = "validateAccountInformation"
}))
ValidateACountInformation功能说明如下:
function validateAccountInformation() {
if (error.length > 0) {
showErrorNotification(errorListHtml);
return false;
}
else {
if ( Some Conditions ) {
bootbox.confirm({
title: "Confirm",
size: "medium",
message: "Some Message",
callback: function (result) {
if (result) {
Some Code
}
else {
Some Code
}
}
});
}
}
单击Save按钮时,首先调用validateAccountInformation函数。如果没有错误,它将引发引导框。如果单击Bootbox OK按钮,它将提交具有特定值的表单;如果单击Bootbox CANCEL按钮,它将提交具有与以前不同的特定值的表单
现在,我面临的问题是,当用户单击SAVE按钮时,它将转到validateAccountInformation函数。如果没有错误,则调用Bootbox.Confirm。我所期望的是,表单提交将一直保持,直到在引导框中单击确定/取消按钮。但它并不等待引导盒。这意味着永远不会调用Bootbox回调函数。这可能与AJAX是异步的有关
我使用了javascript确认方法。这个方法确实可以保存表单提交
function validateAccountInformation() {
if (error.length > 0) {
showErrorNotification(errorListHtml);
return false;
}
else {
if ( Some Conditions ) {
if (confirm("check")) {
some code
}
}
}
}
是否有方法可以按照上述场景使用带有Ajax开始表单的Bootbox确认框?我已经更改了流程,并且能够集成Bootbox。 我所做的是,我省略了onBegin函数。所以我的查看页面看起来像这样
@using (Ajax.BeginForm("UpdateAccount", "AccountInfo", new AjaxOptions {
HttpMethod = "POST",
AllowCache = false,
OnSuccess = "accountUpdateRequestSuccess",
OnFailure = "formSubmissionFailed",
}))
现在,我添加了一个函数,该函数由表单峰会按钮的onclick事件触发。并在此功能中集成了validateAccountInformation功能和引导盒。这里重要的一点是,这个函数总是返回false。通过返回false,我成功地保留了表单提交。现在onClick事件函数如下所示
$(document).on('click', '#btn-edit-account-save', function () {
var submit = validateAccountInformation();
some code
if (submit == true) {
if (some condition)
{
$('Form').submit();
}
else
{
bootbox.confirm(
{
title: "Confirm",
size: "medium",
message: "Some Message",
callback: function (result)
{
if (result)
{
$('Form').submit();
}
else
{
some code
}
}
});
}
}
return false;
});
阻止默认操作:
$('form').submit(函数(e){e.preventDefault();…}
然后在启动后需要时调用form.submit。启动盒模块不能阻止您的UI线程-它们只是启动模块,本身只是定位在div中。文档页或多或少地介绍了这一点: