首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ViewData和TempData的区别是什么?

ViewData和TempData的区别是什么?
EN

Stack Overflow用户
提问于 2008-10-06 03:57:42
回答 3查看 47K关注 0票数 101

我知道ViewData是什么,并且一直在使用它,但是在ASP.NET预览版5中,他们引入了一个新的叫做TempData的东西。

我通常使用强类型的ViewData,而不是使用对象字典方法。

那么,什么时候应该使用TempData而不是ViewData呢?

这方面有什么最佳实践吗?

EN

回答 3

Stack Overflow用户

发布于 2009-01-20 21:23:23

当一个操作返回一个RedirectToAction结果时,它会导致一个HTTP重定向(相当于Response.Redirect)。数据可以在控制器的TempData属性(字典)中保留单个HTTP重定向请求的持续时间。

票数 30
EN

Stack Overflow用户

发布于 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

票数 4
EN

Stack Overflow用户

发布于 2018-07-22 19:34:51

当我们想要将数据从控制器传递到相应的视图时,使用视图数据。视图数据的生命周期非常短,这意味着当发生重定向时,它将被销毁。示例(控制器):

代码语言:javascript
复制
public ViewResult try1()
    {
        ViewData["DateTime"] = DateTime.Now;
        ViewData["Name"] = "Mehta Hitanshi";
        ViewData["Twitter"] = "@hitanshi";
        ViewData["City"] = "surat";
        return View();
    }

try1.cshtm

代码语言:javascript
复制
<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()使其在所有操作中都可用,或者使其持久。

示例(控制器):

代码语言:javascript
复制
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

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/173159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档