私はこの部分的なビューを使用しています
@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);
}
これは、フォームを送信した後に表示されるものです(アイテムは正しく追加されます)
私が間違っていることがわからない。
JQueryJavaScriptライブラリv2.1.1の使用
Web.configにあります
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
私はこのように私の部分的なビューを呼んでいます
@{ Html.RenderPartial("_CreateConfigEntity", new CreateConfigEntityModel(Model.MerchantId)); }
まったく新しいプロジェクトがあると仮定すると、これを機能させるには次のことを行う必要があります。 ASP.NET MVCテンプレートはnotサポートしていませんAJAX箱から出して:
「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をロードしていると仮定すると、投稿したコードは機能するはずです。
次のjsライブラリへの参照を追加します。
はい、私はそれらのメソッドが呼び出されない理由を知っています、あなたは常にajaxの控えめなファイルを参照する必要があります:jquery.unobtrusive-ajax.min.js