В 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>
Кроме того, на моем веб-сайте root 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. Элемент Form в HTML заполняет все правильные атрибуты data-
.