在没有实际保存的情况下编辑MVC中的部分对象

时间:2017-05-05 15:45:34

标签: c# asp.net-mvc asp.net-mvc-5

我的头衔可能很糟糕,因为我在措辞上遇到了什么问题。

我有一个可能包含大量记录的对象,如下所示:

public class AssignmentGenerator : BaseGenerator
{
    public bool IsLibrary { get; set; } = false;
    public List<LineItem> LineItems { get; set; } = new List<LineItem>();
}

public class LineItem
{
    public string Name { get; set; }
    public string Value { get; set; }
}

我创建了一个允许编辑对象值的表单,但是行项列表可能变得非常大(我有一个例子是~3000)。在这种情况下,我想在我的视图中将订单项列表设为分页列表,允许一次编辑10到50个项目。
我已经阅读了很多关于如何进行分页的教程和帖子,但是我找到的没有一篇关于如何编辑大量数据的内容。在用户实际单击“保存”按钮之前,我不想将每个页面上的更改保存到数据库。有没有办法将值存储在对象中,根据需要检索它们,然后保存用户操作?

1 个答案:

答案 0 :(得分:2)

简短的回答是肯定的,有一种方法 - 你是程序员,你可以做你想做的事。如果没有更多细节,很难给出真实的代码示例,因此下面只是模糊的指导。

您必须将更改存储在某处,但您可以选择将它们保存在临时数据库中,或者将AssignmentGenerator保存在服务器的内存中,并在它们分页时更新集合(假设为1)服务器或固定会话)。

当用户更改页面(而不仅仅是Get端点)时,您必须发布对象的当前状态。您不必保存到真实数据库;你只需更新你的临时副本。 “保存”按钮应触发不同的控制器操作,将临时副本移动到实际数据存储。