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

2019-09-16 11:17发布

我点击了要么“是”或“否”的确认对话框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>

Answer 1:

我相信你正在使用的onSuccess函数不正确。 您的数据成功发布后仅函数将被调用。 所以不管什么在您的确认框数据选择的将得到张贴无论哪种方式,然后你的确认框中只有确定anythings它发布后,这个数据来完成。 这是真的,你想要什么?

至于为什么你onSuccessForm没有被击中,所有我可以提供的方法来尝试调试它。 被showFaliure获取调用呢? 使用萤火虫控制台数据得到公布呢? 如果您注释掉你onBeginForm函数内部一切onSuccessForm获取调用呢?



文章来源: Ajax.BeginForm Confirmation Dialog onBeginForm() before triggering OnSuccessForm()