web-dev-qa-db-ja.com

Ajax.BeginFormOnSuccessが起動しない

私はこの部分的なビューを使用しています

@model CreateConfigEntityModel

<div class="row">
@using (Ajax.BeginForm("AddElement", "MerchantSites", new { merchantId = @Model.MerchantId }, new AjaxOptions
{
  HttpMethod = "POST",
  OnSuccess = "alert('ok')"
},
new { id = "addConfigForm" }
))
{
  @Html.LabelFor(m => m.EntityName)
  @Html.TextBoxFor(m => m.EntityName)
  @Html.ValidationMessageFor(m => m.EntityName)

  @Html.LabelFor(m => m.DefaultValue)
  @Html.TextBoxFor(m => m.DefaultValue)
  @Html.ValidationMessageFor(m => m.DefaultValue)

  <input type="submit" value="Ajouter" class="tiny button" /> 
}
</div>

コントローラ

public JsonResult AddElement(CreateConfigEntityModel model)
{
    if (ModelState.IsValid)
    {
        _merchantSitesManager.AddEntity(model.EntityName, model.DefaultValue);
        return Json(new { code = 1 }, JsonRequestBehavior.AllowGet);
    }
    else
        return Json(new { code = 0 }, JsonRequestBehavior.AllowGet);
}

これは、フォームを送信した後に表示されるものです(アイテムは正しく追加されます)

enter image description here

私が間違っていることがわからない。

JQueryJavaScriptライブラリv2.1.1の使用

Web.configにあります

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

私はこのように私の部分的なビューを呼んでいます

@{ Html.RenderPartial("_CreateConfigEntity", new CreateConfigEntityModel(Model.MerchantId)); }
9
ThunderDev

まったく新しいプロジェクトがあると仮定すると、これを機能させるには次のことを行う必要があります。 ASP.NET MVCテンプレートはnotサポートしていませんAJAX箱から出して:

  1. "Microsoft.jQuery.Unobtrusive.Ajax" パッケージをNugetからプロジェクトに追加します。これを行うには、プロジェクトを右クリックして[Nugetパッケージの管理]を選択します。
  2. 「jquery.unobtrusive-ajax.js」をページに追加します。 System.Web.Optimizationの「バンドル」機能を使用している場合、簡単な方法の1つは、それをjQueryバンドルに追加することです。

    bundles.Add(new ScriptBundle("~/bundles/jquery")
        .Include("~/Scripts/jquery-{version}.js")
        .Include("~/Scripts/jquery.unobtrusive-ajax.js"));
    

    スクリプトを指す<script>タグを追加することもできます。

ページがjQueryおよびjquery.unobtrusive-ajax.jsをロードしていると仮定すると、投稿したコードは機能するはずです。

23
Andrew Whitaker

次のjsライブラリへの参照を追加します。

  • jquery- {version} .min.js
  • MicrosoftAjax.js
  • MicrosoftMvcAjax.js
  • jquery.validate.min.js
  • jquery.validate.unobtrusive.js
  • jquery.unobtrusive-ajax.js
1

はい、私はそれらのメソッドが呼び出されない理由を知っています、あなたは常にajaxの控えめなファイルを参照する必要があります:jquery.unobtrusive-ajax.min.js

0
tika