Asp.net mvc 2 ViewData与tempData中的数据持久性

Asp.net mvc 2 ViewData与tempData中的数据持久性,asp.net-mvc-2,viewdata,Asp.net Mvc 2,Viewdata,我想知道数据在ViewData字典中可以保存多长时间。我知道数据不能在TempData中保存那么长时间(不到一个小时)。那么,它在ViewData中可以持续多久?是否有另一个数据字典可以长期保存数据。我知道这听起来像是我想要一个会话变量,这是非常非MVC的,但是有没有其他方法可以让我从控件获取数据到视图,而不直接将其作为参数传递 我想知道数据在ViewData字典中可以保存多长时间 它的持续时间从您将其放置到请求结束的那一刻,即页面被呈现并发送到客户端 我知道数据不能在TempData中保存那么

我想知道数据在ViewData字典中可以保存多长时间。我知道数据不能在TempData中保存那么长时间(不到一个小时)。那么,它在ViewData中可以持续多久?是否有另一个数据字典可以长期保存数据。我知道这听起来像是我想要一个会话变量,这是非常非MVC的,但是有没有其他方法可以让我从控件获取数据到视图,而不直接将其作为参数传递

我想知道数据在ViewData字典中可以保存多长时间

它的持续时间从您将其放置到请求结束的那一刻,即页面被呈现并发送到客户端

我知道数据不能在TempData中保存那么长时间(不到一小时)

TempData
类似于会话,但只会持续到下一个请求。所以可能是几秒钟、几分钟、几小时、几天

我知道这听起来像是我想要一个会话变量,这是非常非MVC的

我不会说不安,我会说不安

是否有另一个数据字典可以长期保存数据

是的,会话、底层数据存储(如数据库或其他)、cookie、应用程序范围、缓存等等。。。这将取决于您的具体要求

我想知道数据在ViewData字典中可以保存多长时间

它的持续时间从您将其放置到请求结束的那一刻,即页面被呈现并发送到客户端

我知道数据不能在TempData中保存那么长时间(不到一小时)

TempData
类似于会话,但只会持续到下一个请求。所以可能是几秒钟、几分钟、几小时、几天

我知道这听起来像是我想要一个会话变量,这是非常非MVC的

我不会说不安,我会说不安

是否有另一个数据字典可以长期保存数据


是的,会话、底层数据存储(如数据库或其他)、cookie、应用程序范围、缓存等等。。。这一切都取决于您的具体要求。

因此,如果有人打开一个页面,并且在控制器上设置了ViewData,并且他们将该页面保持打开状态一个小时左右,那么,他们就不能指望该变量持续那么长的时间了?@DmainEvent,不,您不能指望这样的事情。您在控制器中设置ViewData,控制器返回一个视图,视图渲染,它生成HTML,在渲染结束时,ViewData与所有内容一起消失。当ViewData清空时,我是否可以检测到一些事件或东西,因此,我可以向用户发送警报,然后让他们导航到另一个页面?@DmainEvent,ViewData被清空的时间远远早于您向用户发送任何内容的时间。正如我在回答中所说,一旦页面呈现并准备好发送给用户,ViewData就不再存在。TempData不会一直保存到下一个请求,而是直到您阅读它。index属性的getter函数删除该项。因此,TempData可以极大地用于具有多个页面(如wizzard)的场景。但是,在读取之后,如果您想进一步保存内容,您需要再次写回内容。因此,如果有人打开一个页面,并且控制器上设置了ViewData,并且他们将该页面保持打开状态一个小时左右,那么,他们就不能指望该变量会持续那么长的时间?@DmainEvent,不,您不能指望这样的事情。您在控制器中设置ViewData,控制器返回一个视图,视图渲染,它生成HTML,在渲染结束时,ViewData与所有内容一起消失。当ViewData清空时,我是否可以检测到一些事件或东西,因此,我可以向用户发送警报,然后让他们导航到另一个页面?@DmainEvent,ViewData被清空的时间远远早于您向用户发送任何内容的时间。正如我在回答中所说,一旦页面呈现并准备好发送给用户,ViewData就不再存在。TempData不会一直保存到下一个请求,而是直到您阅读它。index属性的getter函数删除该项。因此,TempData可以极大地用于具有多个页面(如wizzard)的场景。但是,在阅读之后,如果您想进一步保留内容,则需要将内容写回。