哪个更好,ASP.NET MVC中的Session或2 TempData?

时间:2015-08-09 14:52:25

标签: c# asp.net-mvc session

我发现我不应该在ASP MVC herehere和其他地方使用Session

所以,我想知道使用TempData是否更好,就像我在下面做的那样。

public ActionResult Action1()
{
  if (SomeCondition)
  {
     /*
       I want to show alert to user based on this value that should appear in Action2 view
       So, is it better to:
       1. Session["user"] = "something";
       2. TempData["user"] = "something";
     */
     return RedirectToAction("Action2");
  }
     return View();
}

public ActionResult Action2()
{
   /*
      1. I can read Session["user"] in the view
      2. TempData["user"] = TempData["user"].ToString();
         Now I can read TempData in the view
   */
   return View();
}

1 个答案:

答案 0 :(得分:1)

TempData是默认使用Session的提供商。不过,它可以更改为基于cookie的提供程序。

唯一真正的区别是TempData只存储数据,直到再次读取数据,Session将存储数据,直到超时到期。

在请求之间存储数据没有完美的解决方案。如果可能,你应该避免它。在MVC中,您可以通过将数据加载到View中并将ViewModel发布回控制器来相当容易地完成此操作,在控制器中您可以再次读取数据。

另外,请参阅Think twice about using session state了解会话状态的一些可能替代方案。