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 が呼び出されますか? firebugコンソールを使用すると、データがまったく投稿されますか? onBeginForm 関数内のすべてをコメントアウトすると、onSuccessForm が呼び出されますか?

于 2012-04-11T19:13:36.960 に答える