私はAjaxヘルパーを使用して、以下のようないくつかのフォームをWebサイト全体に作成しましたが、何らかの理由でこの単一フォームが2回送信されます。開発ツールの投稿がすぐに表示され、フォームが送信されているのがわかります。それらの間の唯一の違いは、最初のヘッダに追加のヘッダ(X-Requested-With:XMLHttpRequest)があることです。Ajax.BeginFormコントローラに2回ポストする(ASP.NET MVC5)
私はjquery.unobtrusiveファイルの要求が重複している可能性があることを示唆していますが、ソースと開発ツールをチェックして、単一のインスタンスしか見つけることができません。また、フォームを送信している可能性のある他のコードも見つかりません。
jquery.unobtrusiveライブラリを削除した場合、フォームはAJAXリクエストとしてではなく1回だけ送信されるため、このライブラリのどこかに問題が存在する必要があります。
私の見解は次のようになります。私のアクションは、このようになります
@using (Ajax.BeginForm("_Action", "Controller", null, new AjaxOptions
{
HttpMethod = "POST",
OnBegin = "beginFunc",
OnComplete = "completeFunc",
OnSuccess = "successFunc",
OnFailure = "failureFunc"
},
new { id = "form-id", @class = "loading-container" }))
{
@Html.AntiForgeryToken()
<div class="form-input">
@Html.EditorFor(m => m.PropertyName)
@Html.ValidationMessageFor(m => m.PropertyName)
</div>
<button type="submit" class="right-arrow">Submit</button>
}
:私のBundleConfig.csで
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult _Action(ViewModel vm)
{
// Method code goes here
}
私は誰もがいずれかを提供することができる
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery.validate.unobtrusive*", "~/Scripts/jquery.unobtrusive*"));
を以下していますこれをデバッグする方法や私が確認できるものの他の提案?
'OnBegin'などの機能は何ですか? –
@AlanBuchananはこれを部分的に見ていますか?問題は、jquery.validate.unobtrusiveを複数回参照することによるものかもしれません。 – Sherlock
@StephenMuecke OnBeginなどの関数は、ローダの追加などの視覚的な処理を行っています。 –