Ajax.BeginForm 确认对话框 onBeginForm() 在触发 OnSuccessForm() 之前



在确认对话框中单击"是"或"否"后,OnSuccessForm() 函数不会触发。关于如何在继续之前停止onBeginForm()的任何想法?

我的 MVC3 表格

@using (Ajax.BeginForm("Edit", @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue, new AjaxOptions
{
  UpdateTargetId = Model.Title.Replace(" ", "") + "Form",
  InsertionMode = InsertionMode.Replace,
  OnBegin = "onBeginForm",
  OnSuccess = "OnSuccessForm",
  OnFailure = "showFaliure"
}))
{
  @Html.ValidationSummary(true)
  @Html.RenderStandardEditor("Edit " + Model.Title)
}

这是我的JavaScript示例代码

<script type="text/javascript">
  var confirmation = false;
  function onBeginForm(ajaxContext)
  {
    $.confirm({
    'title': 'Confirmation',
    'message': 'Confirm?',
    'buttons': {
      'Yes': {
        'class': 'cyan',
        'action': function ()
        {
          confirmation = true;
        }
      },
      'No': {
        'class': 'gray',
        'action': function ()
        {
          confirmation = false;
        }
      }
    }
  });
}
function OnSuccessForm(ajaxContext)
{
  if (confirmation == true)
  {
    //DO SOMETHING        
  } 
}
function showFaliure(ajaxContext)
{
  //THROW ERROR
}
</script>
我相信

你错误地使用了onSuccess函数。只有在成功发布数据后,才会调用该函数。因此,无论您在确认框中选择了什么,数据都将以任何一种方式发布,然后您的确认框只会确定在发布后是否对此数据进行了任何操作。这真的是你想要的吗?

至于为什么你的onSuccessForm没有被击中,我所能提供的就是尝试调试它的方法。节目法利乌尔被叫来了吗?使用Firebug控制台是否发布数据?如果你注释掉onBeginForm函数中的所有内容,那么SuccessForm就会被调用吗?

最新更新