2012-04-03 58 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

相關問題