首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TempData持久性

TempData持久性
EN

Stack Overflow用户
提问于 2017-07-14 06:50:40
回答 2查看 3.4K关注 0票数 4

我最近一直在与TempData合作,并面临着一个令人困惑的情况:

假设TempData是在以下操作中创建的:

代码语言:javascript
运行
复制
public ActionResult MyAction1()
{
  //...
  myTempData = TempData["myTempData"];
  //..
}

预期将用于下列行动:

代码语言:javascript
运行
复制
public ActionResult MyAction2()
{
  //...
  TempData["myTempData"] = myTempData;
  //..
}

我知道,如果我在下一个请求中调用MyAction2TempData值将被删除。但是,如果我调用其他操作,而不是MyAction2,在下一个请求时,TempData会被删除吗?如果是这样的话,是否有任何技巧来确保它一直存在到会话结束?

谢谢大家。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-14 07:00:33

下面是,您需要保存并查看下一个请求的临时数据:

如果您不读取临时数据,那么它将可用于下一个后续请求

所以让我们更详细地讨论这四个条件 “Tempdata有助于为单个请求保留值”。 开发商不知道的另一半事实是,或者我要说,使开发商感到困惑的是: “TempData还可以根据4个条件为下一个请求保留值”。

  1. 不读
  2. 正常读
  3. 阅读并保存
  4. 偷看和阅读

条件1(不读):如果您在操作中设置了“TempData”,并且没有在视图中读取它,那么下一个请求将持久化“TempData”。

条件2(正常读取):如果您通常像下面的代码一样读取“TempData”,它将不会在下一个请求中持久存在。

代码语言:javascript
运行
复制
stringstr = TempData["MyData"];

即使您正在显示,这也是一个正常的阅读方式,如下代码所示:

代码语言:javascript
运行
复制
@TempData["MyData"];

条件3(读取和保持):如果您读取“TempData”并调用“保持”方法,它将被持久化。

代码语言:javascript
运行
复制
@TempData["MyData"];    TempData.Keep("MyData");

条件4( Peek和Read):如果使用“Peek”方法读取“TempData”,它将在下一个请求中保持不变。

代码语言:javascript
运行
复制
stringstr = TempData.Peek("Td").ToString();
票数 9
EN

Stack Overflow用户

发布于 2017-07-14 07:01:21

代码语言:javascript
运行
复制
TempData["myTempData"]

1)只有在动作执行时才有TempData持久化,假设action1调用您已经将数据存储到中,那么您需要action2中的访问数据,该数据将明确持久。

2)如果您想要将数据存储在TempData"myTempData"中,那么在每个操作上,首先将TempData"myTempData"的值分配给TempData"myTempData",然后在每个操作中使用它,直到强制删除为止。

希望查询将得到解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45096482

复制
相关文章

相似问题

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