我尝试使用Ajax.BeginRouteForm
创建可以分页和搜索的结果列表。一般的想法是视图顶部的菜单和布局不会被重绘,但搜索结果的中心区域将是。
所以我有两个控制器动作,一个GET,它返回一个初始模型和视图,一个POST,它接受模型,从中获取页面/搜索信息,并运行搜索,返回相同的模型和图。
我看到的是POST工作,获得了新的结果,并且正在使用这些新结果编译视图(调试代码告诉我这个),但客户端表单没有重新绘制。< / p>
当我添加InsertionMode和UpdateTargetId params时,我得到了view-inside-the-view问题,整个菜单在表单区域内呈现。
@using (Ajax.BeginRouteForm(ContentRoutes.EmailContentList,
new { instance = UserContext.InstanceId },
new AjaxOptions
{
HttpMethod = "POST",
OnBegin = "blockForm();",
OnComplete = "unblockForm();",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "frmContent"
},
new { id = "frmContent" }))
{
答案 0 :(得分:1)
您应该有一个包含
形式的ID
frmContent
的外部div
<div id="frmContent">
@using (Ajax.BeginRouteForm(ContentRoutes.EmailContentList,
new { instance = UserContext.InstanceId },
new AjaxOptions
{
HttpMethod = "POST",
OnBegin = "blockForm();",
OnComplete = "unblockForm();",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "frmContent"
}
}
</div>
这是因为您要将AJAX调用的结果添加到frmContent HTML元素。
此外,您应确保 AJAX 确实有效:在操作中使用if (Request.IsAjaxRequest())
并使用调试程序检查其值>