关于 Ajax.BeginForm 没有正确更新目标元素的问题有很多关于返回部分视图的问题:
mvc4 ajax 更新同一页面
ASP.NET MVC 4 - Ajax.BeginForm 和 html5
MVC 4 (razor) - Controller is返回一个局部视图但整个页面正在更新
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 文件。此外,我已验证该页面正在输出正确的路径,并且它找到了正确的文件。我试过切换 and 的顺序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 和我的 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-
属性。