Asp.net mvc 2 编辑可变长度列表时保留ViewData

Asp.net mvc 2 编辑可变长度列表时保留ViewData,asp.net-mvc-2,request,viewdata,Asp.net Mvc 2,Request,Viewdata,我正在编辑可变长度列表,并使用ViewData传递信息以填充下拉列表。我使用此处描述的方法编辑这些列表: 此dropdownlist的数据来自数据库。由于ViewData不能跨请求使用,因此我目前每次都会对数据库进行新的查询。当ModelState无效并且表单被重新显示时,也会发生这种情况。当然,即使对于像这样的轻量级查询,这也不太理想 只要用户正在编辑具有可变长度列表的页面,我如何跨请求保留该查询中的信息 如果列表是用户独有的,则可以将其存储在会话中。如果它在所有用户之间共享,您可以将其存储

我正在编辑可变长度列表,并使用ViewData传递信息以填充下拉列表。我使用此处描述的方法编辑这些列表:

此dropdownlist的数据来自数据库。由于ViewData不能跨请求使用,因此我目前每次都会对数据库进行新的查询。当ModelState无效并且表单被重新显示时,也会发生这种情况。当然,即使对于像这样的轻量级查询,这也不太理想


只要用户正在编辑具有可变长度列表的页面,我如何跨请求保留该查询中的信息

如果列表是用户独有的,则可以将其存储在会话中。如果它在所有用户之间共享,您可以将其存储在缓存中。在任何一种情况下,存储的列表都会过期,因此您必须准备好重新查询它

我以前从未使用过会话环境。如何判断是否需要重新查询?我只是在访问会话中的数据,但是我怎么知道视图中的某些数据不再可用?好吧,它不在那里,您需要重新查询,即如果会话[Foo]==null{。也就是说,DB查询没有问题。请确保您没有过早地优化。