【发布时间】:2013-02-26 17:50:27
【问题描述】:
关于 Ajax.BeginForm 的问题有很多关于 Ajax.BeginForm 没有正确更新返回部分视图的目标元素的主题:
mvc4 ajax updating same page
ASP.NET MVC 4 - Ajax.BeginForm and html5
MVC 4 (razor) - Controller is returning a partialview but entire page is being updated
MVC 4 Ajax is not updating the PartialView within the page
但是,所有这些都可以通过手动写出 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 和我的 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- 属性。
【问题讨论】:
标签: c# ajax asp.net-mvc-4 ajax.beginform razor-2