创建新会话后保留TempData值

时间:2016-12-26 07:41:00

标签: asp.net asp.net-mvc asp.net-mvc-3 session-variables

出于某种原因,我在控制器的action方法中创建了新的Session。但我在ActionMethod1中有TempData,我想在创建新的seeion后将值传递给ActionMethod2。但在创建新的会话ID后,我的TempData值被清除。下面的代码已用于创建新的sessionid。

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

如果有任何其他可能的解决方案,即使在创建新会话后仍然保留tempdata值,请告诉我。

1 个答案:

答案 0 :(得分: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);