我知道ViewData是什么,并且一直在使用它,但是在ASP.NET预览版5中,他们引入了一个新的叫做TempData的东西。
我通常使用强类型的ViewData,而不是使用对象字典方法。
那么,什么时候应该使用TempData而不是ViewData呢?
这方面有什么最佳实践吗?
发布于 2009-01-20 21:23:23
当一个操作返回一个RedirectToAction结果时,它会导致一个HTTP重定向(相当于Response.Redirect)。数据可以在控制器的TempData属性(字典)中保留单个HTTP重定向请求的持续时间。
发布于 2014-10-03 17:00:34
我发现这个比较很有用:http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html
我遇到的一个问题是,默认情况下,TempData值在读取后会被清除。有很多选择,see methods 'Peek' and 'Keep' on Msdn for more info。
发布于 2018-07-22 19:34:51
当我们想要将数据从控制器传递到相应的视图时,使用视图数据。视图数据的生命周期非常短,这意味着当发生重定向时,它将被销毁。示例(控制器):
public ViewResult try1()
{
ViewData["DateTime"] = DateTime.Now;
ViewData["Name"] = "Mehta Hitanshi";
ViewData["Twitter"] = "@hitanshi";
ViewData["City"] = "surat";
return View();
}
try1.cshtm
<table>
<tr>
<th>Name</th>
<th>Twitter</th>
<th>Email</th>
<th>City</th>
<th>Mobile</th>
</tr>
<tr>
<td>@ViewData["Name"]</td>
<td>@ViewData["Twitter"]</td>
<td>@ViewData["City"]</td>
</tr>
</table>
TempData在控制器之间或动作之间传输数据。它用于存储一次性消息,并且它的生命周期非常长。short.we可以使用TempData.Keep()使其在所有操作中都可用,或者使其持久。
示例(控制器):
public ActionResult try3()
{
TempData["DateTime"] = DateTime.Now;
TempData["Name"] = "Ravina";
TempData["Twitter"] = "@silentRavina";
TempData["Email"] = "Ravina12@gmail.com";
TempData["City"] = "India";
TempData["MobNo"] = 9998975436;
return RedirectToAction("TempView1");
}
public ActionResult TempView1()
{
return View();
}
TempView1.cshtm
<table>
<tr>
<th>Name</th>
<th>Twitter</th>
<th>Email</th>
<th>City</th>
<th>Mobile</th>
</tr>
<tr>
<td>@TempData["Name"]</td>
<td>@TempData["Twitter"]</td>
<td>@TempData["Email"]</td>
<td>@TempData["City"]</td>
<td>@TempData["MobNo"]</td>
</tr>
</table>
https://stackoverflow.com/questions/173159
复制相似问题