MVC4 Ajax.BeginForm nie zastępuje UpdateTargetId
Jest tak wiele tematów na temat problemów związanych z SO, że Ajax.BeginForm nie aktualizuje poprawnie elementu docelowego za pomocą częściowego widoku powrotu:
mvc4 ajax aktualizuje tę samą stronę
ASP.NET MVC 4 - Ajax.BeginForm i html5
MVC 4 (brzytwa) - Kontroler zwraca częściowy widok, ale cała strona jest aktualizowana
MVC 4 Ajax nie aktualizuje PartialView na stronie
Jednak na wszystkie z nich odpowiada ręczne zapisanie jQuery ajax lub brakujący plik javascript.
@using (Ajax.BeginForm("PostcardDetails", new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "details"
}))
{
<div id="PostcardSearchResults">
@{Html.RenderAction("PostcardSearchResults", Model);}
</div>
}
<div id="details">
</div>
Odpowiedni kod kontrolera:
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult PostcardSearchResults(PostcardSearchFilter filter)
{
PostcardSearchResults model = new PostcardSearchResults(filter);
return PartialView("_PostcardSearchResults", model);
}
W moim układzie odwołuję się do tych plików jQuery. Dodatkowo sprawdziłem, że strona wyświetla poprawną ścieżkę i że znajduje poprawne pliki. Próbowałem zmienić kolejnośćunobtrusive-ajax.min.js
ivalidate.min.js
, bez powodzenia.
<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>
Dodatkowo w katalogu głównym mojej strony internetowej web.config i web.config w moim folderze View uwzględniłem:
<add key="webpages:Version" value="2.0.0.0"/>
<add key="PreserveLoginUrl" value="true"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
Brak mi miejsca, gdzie mógłbym spojrzeć. Nie są zgłaszane błędy javascript, a kontroler jest prawidłowo trafiany, zwracając PartialViewResult. Element formularza w HTML wypełnia wszystkie poprawnedata-
atrybuty.