ASP MVC 3:在用户离开视图后,是否有办法使会话中的对象过期?

时间:2011-06-22 11:33:50

标签: asp.net-mvc

我有以下问题。在ASP MVC的视图中,我需要存储视图接收的原始对象,并将其与修改后的版本进行比较(这是修改视图中原始对象后的结果)。

我遇到的问题是,由于原始对象未绑定到视图(因为没有理由而且我必须为此创建许多隐藏字段),否则它将丢失,除非我将其存储在会话中。但是,这可能会导致另一个问题,因为如果用户通过导航菜单离开页面而不是保存他的更改,则此对象将保留在会话中,直到它过期,我认为这不好。

3 个答案:

答案 0 :(得分:4)

在我看来,你试图以“窗体形式”或“网络形式”的方式推理。

因此,您需要检测对对象所做的更改。实现这一目标的模式相当简单:

  • 从数据存储区中获取对象(无论哪个)并将其发送到视图
  • 显示要编辑对象的字段。有一个带有对象id的隐藏字段。
  • 将数据发布到您的操作方法。使用id从数据存储中检索原始对象,然后使用帖子中的新值更新原始对象。
  • 将更改保留到数据存储区。

如您所见,无需在会话中存储任何内容。除了没用之外,这将是不好的做法。

答案 1 :(得分:0)

为什么不将原始对象存储在数据库中,并在用户发布更新版本时从那里检索它?

答案 2 :(得分:0)

为什么不使用ViewBag?只要你处于特定的观点,它就会活着。