0

在确认对话框上单击“是”或“否”后,不会触发 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>
4

1 回答 1

1

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

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

于 2012-04-11T19:13:36.960 回答