2012-04-03 57 views
3

我已经读过TempData在Asp.Net MVC中被会话支持,但只在当前请求的持续时间内有效。这使得它适用于Redirect2Action等。 鉴于它只对当前请求有效,这是否意味着您不会遇到WebFarms上的负载平衡器和会话问题。基本上,因为你每个请求只在一个网络服务器上。为什么TempData支持的会话

是否可以通过Request.Items集合来支持它吗?

回答

4

TempData只对当前和next request有效,这就是它存储在会话状态的原因。用请求存储它将不起作用。

因此,会破坏会话状态(例如负载均衡)中保存项目的任何限制也会破坏TempData。

查看文档TempDataDictionary

可以使用TempDataDictionary对象在您使用的ViewDataDictionary对象以相同的方式 数据传递。但是,TempDataDictionary对象中的数据只能从一个请求持续到下一个请求, ,除非通过使用Keep方法标记一个或多个要保留的密钥。如果某个密钥被标记为保留,该密钥将被保留用于下一个请求 。

TempDataDictionary对象的一个​​典型用法是当它重定向到另一个操作方法时,从 操作方法传递数据。例如, 在调用RedirectToAction方法之前,操作方法可能会在控制器的TempData属性(它返回TempDataDictionary 对象)中存储有关错误的信息。接下来的操作 方法可以处理该错误并呈现显示 错误消息的视图。

+2

实际上,从MVC2开始,TempData被保留下来直到下一次该密钥被访问,这可能是下一个请求或10个请求。 http://blog.donnfelker.com/2010/02/26/aspnet-mvc2-tempdata-now-persists/ – 2012-04-03 06:20:48

相关问题