我最近一直在与TempData
合作,并面临着一个令人困惑的情况:
假设TempData
是在以下操作中创建的:
public ActionResult MyAction1()
{
//...
myTempData = TempData["myTempData"];
//..
}
预期将用于下列行动:
public ActionResult MyAction2()
{
//...
TempData["myTempData"] = myTempData;
//..
}
我知道,如果我在下一个请求中调用MyAction2
,TempData
值将被删除。但是,如果我调用其他操作,而不是MyAction2
,在下一个请求时,TempData
会被删除吗?如果是这样的话,是否有任何技巧来确保它一直存在到会话结束?
谢谢大家。
发布于 2017-07-14 07:00:33
下面是,您需要保存并查看下一个请求的临时数据:
如果您不读取临时数据,那么它将可用于下一个后续请求
所以让我们更详细地讨论这四个条件 “Tempdata有助于为单个请求保留值”。 开发商不知道的另一半事实是,或者我要说,使开发商感到困惑的是: “TempData还可以根据4个条件为下一个请求保留值”。
条件1(不读):如果您在操作中设置了“TempData”,并且没有在视图中读取它,那么下一个请求将持久化“TempData”。
条件2(正常读取):如果您通常像下面的代码一样读取“TempData”,它将不会在下一个请求中持久存在。
stringstr = TempData["MyData"];
即使您正在显示,这也是一个正常的阅读方式,如下代码所示:
@TempData["MyData"];
条件3(读取和保持):如果您读取“TempData”并调用“保持”方法,它将被持久化。
@TempData["MyData"]; TempData.Keep("MyData");
条件4( Peek和Read):如果使用“Peek”方法读取“TempData”,它将在下一个请求中保持不变。
stringstr = TempData.Peek("Td").ToString();
发布于 2017-07-14 07:01:21
TempData["myTempData"]
1)只有在动作执行时才有TempData持久化,假设action1调用您已经将数据存储到中,那么您需要action2中的访问数据,该数据将明确持久。
2)如果您想要将数据存储在TempData"myTempData"中,那么在每个操作上,首先将TempData"myTempData"的值分配给TempData"myTempData",然后在每个操作中使用它,直到强制删除为止。
希望查询将得到解决。
https://stackoverflow.com/questions/45096482
复制相似问题