出于某种原因,我在控制器的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值,请告诉我。
答案 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);