2016-12-26 103 views
0

出於某種原因,我在我的控制器的操作方法中創建了新的會話。但我在我的ActionMethod1中有TempData,我想在創建新的seeion之後將值傳遞給ActionMethod2。但創建新的會話ID後,我的TempData值被清除。以下代碼已用於創建新的sessionid。創建新會話後保留TempData值

System.Web.SessionState.SessionIDManager manager = new  
System.Web.SessionState.SessionIDManager(); 
string NewSession = manager.CreateSessionID(System.Web.HttpContext.Current); 

請讓我知道是否有任何其他可能的解決方案,即使在創建新會話後仍保留tempdata值。

+0

怎麼樣在一個變量存儲TempData的值,創建新的會話,寫這些值回內到TempData詞典同樣的方法? – Felix

回答

0

但創建新的會話ID後,我的TempData值被清除。

TempData存儲在會話狀態。這就是值被刪除的原因。

請讓我知道是否有任何其他可能的解決方案,即使在創建新會話後仍保留tempdata值。

你應該能夠做到像下面這樣(未經):

var oldTempData = TempData.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); 

System.Web.SessionState.SessionIDManager manager = new  
    System.Web.SessionState.SessionIDManager(); 
string NewSession = manager.CreateSessionID(System.Web.HttpContext.Current); 

foreach(var kvp in oldTempData) 
    TempData.Add(kvp.Key, kvp.Value);