2017-05-05 58 views
2

我的标题可能很糟糕,因为我在尝试执行操作时遇到了问题。在MVC中编辑部分对象时未实际保存

我有一个对象,可以潜在地包含的记录一个庞大的数字,看起来是这样的:

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个项目。
我已经阅读了很多关于如何进行分页的教程和文章,但没有找到我如何编辑大量数据的文章。我不想将每个页面上的更改保存到数据库,直到用户实际单击保存按钮。有没有办法将值存储在对象中,根据需要检索它们,然后在用户操作时保存?

回答

2

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

你来存储他们的变化地方,但你可以选择将它们保存在一个临时数据库,或者让你的AssignmentGenerator在内存中的服务器上,只是更新集合时,他们页面(假设1级的服务器或固定会议)。

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

+0

我的经验是赢得表格和服务,所以我很抱歉,如果这是基本的。对此我的问题是,你如何维护控制器中的对象状态? – Lance

+1

你不是 - 绝对不在控制器本身,我的意思是,这是共享的。一种选择可以将其存储为会话数据 - http://stackoverflow.com/questions/28154081如果解决方案需要可扩展性,它可以是内存中会话,也可以是更好的分布式缓存支持。我建议先阅读更多关于会议的内容,以了解他们的工作方式。 –