【问题标题】:ASP.MVC RedirectToAction kills data SessionASP.MVC RedirectToAction 杀死数据会话
【发布时间】:2011-12-19 04:11:50
【问题描述】:

在 ASP MVC3 中,RedirectToAction 会杀死 Session 中的数据...为什么?

考虑一下这段代码。

    [HttpGet]
public ActionResult RequestTestExtract()
{
    return View(new ExtractRequestViewModel());
}



[HttpPost]
public ActionResult RequestTestExtract(ExtractRequestViewModel viewModel)
{
    var currentExtracts = (Session["Extracts"] as Dictionary<string, bool>) ?? new Dictionary<string, bool>();
    currentExtracts.Add(viewModel.fileName, false);
    Session["Extracts"] = currentExtracts;

    // typing 
    // ?Session["Extracts"] 
    // in immediate window before RedirectToAction shows a value 
            // typing it after does not
    return RedirectToAction("RequestTestExtract");
}

如果我返回一个视图而不是重定向到操作,会话仍然有我存储在那里的数据。

RedirectToAction 很重要,因此我将用户留在 GET 页面而不是 POST 页面,以避免出现烦人的重新发布对话。

编辑:

当我删除它时,它位于我的控制器 [SessionState(SessionStateBehavior.ReadOnly)] 的顶部。

【问题讨论】:

  • 你试过用TempData吗?
  • 相比 Session 使用它有什么优势
  • 如果我没记错的话 TemData 仍然是基于会话的。

标签: asp.net-mvc-3 session


【解决方案1】:

当我删除它时,它位于我的控制器 [SessionState(SessionStateBehavior.ReadOnly)] 的顶部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2014-11-19
    • 2012-12-31
    • 1970-01-01
    • 2011-10-29
    • 2016-04-20
    相关资源
    最近更新 更多