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中。文档页或多或少地介绍了这一点: