На SO так много тем о проблемах с Ajax.BeginForm, которые неправильно обновляют целевой элемент с частичным представлением возврата:
mvc4 ajax обновляет ту же страницу
ASP.NET MVC 4 — Ajax.BeginForm и html5
MVC 4 (razor) — контроллер возвращает частичное представление, но вся страница обновляется
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.config моего веб-сайта и файл web.config в папке View я включил:
<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 заполняет все правильные атрибуты data-
.