Ajax 帮助程序不重绘窗体



我正在尝试使用Ajax.BeginRouteForm来创建可以分页和搜索的结果列表。一般的想法是,视图顶部的菜单和布局不会被重绘,但搜索结果的中心区域会被重绘。

所以我有两个控制器操作,一个 GET,它返回一个初始模型和视图,一个 POST,它获取模型,从中获取页面/搜索信息,然后运行搜索,返回相同的模型和视图。

我看到的是 POST 工作,获得新结果,并且视图正在使用这些新结果进行编译(调试代码告诉我这一点),但客户端表单没有被重绘。

当我添加 InsertionMode 和 UpdateTargetId 参数时,我遇到了视图内视图问题,其中整个菜单都在窗体区域内呈现。

@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" }))

{

你应该有一个外部div,ID frmContent包含以下形式

<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())并使用调试器检查其值。

最新更新