编辑对话框中的项目,然后刷新当前页面显示(而不是跳回到第1页)

时间:2012-04-06 11:57:36

标签: asp.net-mvc

我有ASP.NET MVC3的解决方案。我有一个页面,我们可以管理用户(创建/编辑/删除)。我在这个页面上有分页。

enter image description here

按下编辑按钮时,会显示一个对话框,可以进行编辑。

enter image description here

当用户单击“保存”按钮时,将隐藏该对话框,并通过ajax刷新列表。

当用户编辑第2页或第3页上的项目或...时出现问题。在这种情况下,显示页面1。原因是我的操作控制器中不知道当前页面信息。我想在我的视图中保留当前活动的页面。

这是我的解决方案,但不太满意:

在我的编辑按钮上,我有以下的ActionLink:

@Html.ActionLink("Editer", "Edit", new { userID = item.UserID }, new { userID = item.UserID, page = Model.PageNumber, @class = "btn small editUser" }) 

我在我的锚链接中注入了页码。接下来显示对话框。下一个用户单击“保存(提交)”。触发提交操作,并在post参数中注入页码,如下所示:

$('form', dialog).submit(function () {
    $.post($(this).attr('action'), $(this).serialize() + '&page=2', function (data, status) {
            $('#my-modal').modal('hide');
            $("#userList").html(data);
    })
});

如您所见,我手动添加'& page = 2'用于测试目的。我的控制器中的操作接收已更新的已发布数据(已编辑的项目+页码),然后RedirectToAction(“List”,new {page = page})刷新右侧页面的列表。

我不喜欢这个解决方案。必须有更好的办法,不是吗?

如果有人可以帮助我,请提前致谢。

2 个答案:

答案 0 :(得分:0)

是否有一个完整的“Ajax网格”,你可以刷新而不刷新页面,或者你有一个“服务器端”网格,而不是你需要重新加载页面,你的解决方案很好。

答案 1 :(得分:0)

为什么不使用新数据更新行,而不是返回整个网格。我在搜索/编辑页面上执行此操作。当用户单击一行时,将该行索引存储在javascript中。然后在成功编辑后,使用文本框中的值更新行。