我有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})刷新右侧页面的列表。
我不喜欢这个解决方案。必须有更好的办法,不是吗?
如果有人可以帮助我,请提前致谢。
答案 0 :(得分:0)
是否有一个完整的“Ajax网格”,你可以刷新而不刷新页面,或者你有一个“服务器端”网格,而不是你需要重新加载页面,你的解决方案很好。
答案 1 :(得分:0)
为什么不使用新数据更新行,而不是返回整个网格。我在搜索/编辑页面上执行此操作。当用户单击一行时,将该行索引存储在javascript中。然后在成功编辑后,使用文本框中的值更新行。