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

时间:2012-04-11 09:57:58

标签: jquery ajax asp.net-mvc-3

在确认对话框中单击“是”或“否”后,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>

1 个答案:

答案 0 :(得分:1)

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

至于为什么你的onSuccessForm没有被击中,我所能提供的只是尝试调试它的方法。 showFaliure会被调用吗?使用firebug控制台是否会发布数据?如果你注释掉onBeginForm函数中的所有内容,那么onSuccessForm会被调用吗?