Ajax Helper没有重绘表单

时间:2014-12-15 19:14:42

标签: ajax asp.net-mvc razor

我尝试使用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" }))

{

1 个答案:

答案 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())并使用调试程序检查其值>