ASP.MVC RedirectToAction终止数据会话

时间:2011-11-01 01:01:44

标签: asp.net-mvc-3 session

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

考虑这段代码。

    [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");
}

如果我返回View而不是重定向到操作,则Session仍然存储我存储的数据。

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

编辑:

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

1 个答案:

答案 0 :(得分:0)

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