65.9K
CodeProject 正在变化。 阅读更多。
Home

MVC Tempdata、Peek 和 Keep 的困惑

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (56投票s)

2014年9月13日

CPOL

2分钟阅读

viewsIcon

192179

本文讨论了 MVC Tempdata 以及 MVC tempdata、Peek 和 Keep 的工作原理,并提供了示例和循序渐进的视频教程。

本博客假定您对 MVC 有一定的了解。 如果没有,我建议您从这个 YouTube 视频开始 学习 MVC

最近,我在 孟买参加 MVC 课程,我发现参与者对 MVC tempdata、Peek 和 Keep 的工作原理有很多困惑。 我认为这种困惑源于大多数 MVC 开发人员只知道半真半假。

大多数 MVC 开发人员知道的“半真半假”是

“Tempdata 有助于为单个请求保留值”。

开发人员不知道的另一个“半真半假”,或者说会使开发人员感到困惑的是

“TempData 也可以根据 4 个条件保留下一个请求的值”。

那么,让我们尝试理解上述两个陈述。 当最终用户向 MVC 应用程序发送请求时,“TempData”将在整个请求过程中得到维护。 此请求可以遍历多个操作或控制器,直到在浏览器上显示视图为止。

现在,在同一会话中(不关闭浏览器),如果发起新的/第二个请求,则“TempData”将根据 4 个条件持久化

  • 未读取
  • 正常读取
  • 读取并保留
  • Peek 并读取

那么,让我们更详细地讨论这四个条件(请参阅下面的图表以获得更好的理解)

条件 1(未读取):如果您在操作中设置了“TempData”,并且不在视图中读取它,则“TempData”将保留用于下一个请求。

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

stringstr = TempData[“MyData”];

即使您正在显示,它也是正常读取,如以下代码所示

@TempData[“MyData”];

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

@TempData[“MyData”];
TempData.Keep(“MyData”);

条件 4(Peek 并读取):如果您使用“Peek”方法读取“TempData”,它将保留用于下一个请求。

stringstr = TempData.Peek("Td").ToString();

我从 http://stepbystepschools.net/?p=1810 获取了上面的图片

因此,如果您在脑海中记住了这四个条件,您就不应该对 TempData 有任何困惑了:)。

下面是一个演示 TempdataKeepPeek 的视频。

如需进一步阅读,请观看以下面试准备视频和分步视频系列。

© . All rights reserved.