我发现我不应该在ASP MVC here,here和其他地方使用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();
}
答案 0 :(得分:1)
TempData
是默认使用Session
的提供商。不过,它可以更改为基于cookie的提供程序。
唯一真正的区别是TempData
只存储数据,直到再次读取数据,Session
将存储数据,直到超时到期。
在请求之间存储数据没有完美的解决方案。如果可能,你应该避免它。在MVC中,您可以通过将数据加载到View中并将ViewModel
发布回控制器来相当容易地完成此操作,在控制器中您可以再次读取数据。
另外,请参阅Think twice about using session state了解会话状态的一些可能替代方案。