0

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

在此处输入图像描述

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

在此处输入图像描述

当用户单击保存按钮时,对话框被隐藏,列表通过 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}) 刷新右侧页面的列表。

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

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

4

2 回答 2

0

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

于 2012-04-06T12:42:34.330 回答
0

无论您是否有一个完整的“Ajax 网格”,您可以在不刷新页面的情况下刷新它,或者您有一个“服务器端”网格,而不是您需要重新加载页面,并且您的解决方案很好。

于 2012-04-06T12:31:09.797 回答