Ajax.BeginFormがリターンパーシャルビューでターゲット要素を正しく更新しない問題に関するSOに関するトピックは非常にたくさんあります:
mvc4ajaxが同じページを更新するASP.NETMVC4
-Ajax.BeginFormおよびhtml5MVC
4(かみそり)-コントローラーは部分ビューを返すが、ページ全体が更新されている
MVC 4 Ajaxはページ内のPartialViewを更新していません。
ただし、これらはすべて、jQuery ajaxを手動で書き出すか、不足しているjavascriptファイルを含めることで解決されます。
@using (Ajax.BeginForm("PostcardDetails", new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "details"
}))
{
<div id="PostcardSearchResults">
@{Html.RenderAction("PostcardSearchResults", Model);}
</div>
}
<div id="details">
</div>
関連するコントローラーコード:
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult PostcardSearchResults(PostcardSearchFilter filter)
{
PostcardSearchResults model = new PostcardSearchResults(filter);
return PartialView("_PostcardSearchResults", model);
}
私のレイアウトでは、これらのjQueryファイルを参照しています。さらに、ページが適切なパスを出力していること、および正しいファイルが検出されていることを確認しました。unobtrusive-ajax.min.js
との順序を切り替えてみましたが、うまくいきませvalidate.min.js
んでした。
<script type="text/javascript" src="@Url.Content("~/Scripts/globalize.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.9.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.10.0.custom.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
さらに、私のWebサイトのルートweb.configとViewフォルダーのweb.configには、次のものが含まれています。
<add key="webpages:Version" value="2.0.0.0"/>
<add key="PreserveLoginUrl" value="true"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
私は他にどこを見るべきか途方に暮れています。スローされるJavaScriptエラーはなく、コントローラーは適切にヒットされ、PartialViewResultを返します。HTMLのForm要素は、すべての正しいdata-
属性を入力しています。