【问题标题】:Retain TempData Value after creating new session创建新会话后保留 TempData 值
【发布时间】:2017-05-10 17:26:12
【问题描述】:

出于某种原因,我正在控制器的操作方法中创建新会话。但是我的 ActionMethod1 中有 TempData,我想在创建新视野后将值传递给 ActionMethod2。但是在创建新的会话 id 后,我的 TempData 值被清除了。以下代码已用于创建新的 sessionid。

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

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

【问题讨论】:

  • 如何将 TempData 值存储在变量中,创建新会话并在同一方法中将这些值写回 TempData 字典?

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


【解决方案1】:

但在创建新会话 id 后,我的 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多