2012-11-28 48 views
2

我想在會話中存儲一個簡單的變量,以便能夠從不同的控制器獲取它的值。在asp.net mvc控制器中保存和讀取會話變量的問題

在我的控制,我想救變量是這樣的:

HttpContext.Session.Add("CurrentPage",index.ToString()) 

而且這樣:

Session["CurrentPage"] = index.ToString(); 

但是,當我試圖從會議上寫着: var currPage = Session["CurrentPage"]我一無所獲。變量未初始化,不會顯示在本地調試窗口中。

我在做什麼錯?

現在我決定使用cookies來完成這項任務,但無論如何我對可能的解決方案感興趣。可能是別人會有同樣的問題,並會搜索解決方案。

+0

看起來正確的給我。你確定你的會話在設置和閱讀你的變量之間沒有失效嗎? – Tom

+0

@Tom如何檢查,如果我的會話失效? –

+0

http://www.tyronedavisjr.com/2008/11/23/detecting-session-timeouts-using-a-aspnet-mvc-action-filter/ – Tom

回答

0

如果妳想要從一個方法傳遞一個值到另外一個控制器,讓試試這個

TempData["Data"] = index.ToString(); 

和檢索數據回 使用

var message = TempData["Data"]; 
+0

正如我以前所想,TempData用於在一次重新傳遞數據。如果有更多的重定向 - TempData將被刪除。在我的情況下,我將有多個保存到TempData/Session並從中讀取的重定向。 –