【问题标题】:Which is better, Session or 2 TempData in ASP.NET MVC?ASP.NET MVC 中的 Session 或 2 TempData 哪个更好?
【发布时间】:2015-08-09 14:52:24
【问题描述】:

我发现我不应该在 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();
}

【问题讨论】:

  • 取决于你是/必须坚持的what。您甚至可以这样做客户端(同样,取决于您需要坚持什么)。
  • 我的意思是其中一个在这种情况下的性能是否更好,但我从答案中了解到TempData 基本上是Session。所以我认为没有区别,或者可能 - 猜测 - 即使使用 2 TempData 会比 Session 更糟糕,因为服务器会创建一个,然后终止它,然后创建另一个,然后终止它,而不是创建Session 然后超时后过期。
  • 同样,它取决于你需要持久化什么样的数据 ....

标签: c# asp.net-mvc session


【解决方案1】:

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

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

在请求之间存储数据没有完美的解决方案。如果可能的话,你应该避免它。在 MVC 中,您可以通过将数据加载到视图中并将 ViewModel 发送回控制器来再次读取数据,从而相当容易地做到这一点。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 2012-02-16
    • 2014-10-17
    • 2013-11-27
    • 2011-12-12
    • 1970-01-01
    相关资源
    最近更新 更多