MVC Tempdata、Peek 和 Keep 的困惑






4.90/5 (56投票s)
本文讨论了 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
有任何困惑了:)。
下面是一个演示 Tempdata
、Keep
和 Peek
的视频。
如需进一步阅读,请观看以下面试准备视频和分步视频系列。