加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – TempData keep()vs peek()

发布时间:2020-12-15 19:33:09 所属栏目:asp.Net 来源:网络整理
导读:keep()和peek()之间有什么区别? MSDN说: keep():在字典中标记指定的键以保留。 peek():返回一个包含元素的对象 与指定键相关联,而不标记键 删除。 我不能得到真正的区别是什么,他们不保留另一个请求的值? 解决方法 当读取TempDataDictionary中的一个
keep()和peek()之间有什么区别?

MSDN说:

> keep():在字典中标记指定的键以保留。
> peek():返回一个包含元素的对象
与指定键相关联,而不标记键
删除。

我不能得到真正的区别是什么,他们不保留另一个请求的值?

解决方法

当读取TempDataDictionary中的一个对象时,它将在该请求结束时标记为删除。

这意味着如果你把东西在TempData喜欢

TempData["value"] = "someValueForNextRequest";

而在另一个请求你访问它,值将在那里,但一旦你读它,该值将被标记为删除:

//second request,read value and is marked for deletion
object value = TempData["value"];

//third request,value is not there as it was deleted at the end of the second request
TempData["value"] == null

“偷看”和“保持”方法允许您读取值,而不标记删除。假设我们回到第一个请求,值被保存到TempData。

使用“偷看”,您只需一次调用即可获得该值,而无需将其标记为删除,请参阅msdn:

//second request,PEEK value so it is not deleted at the end of the request
object value = TempData.Peek("value");

//third request,read value and mark it for deletion
object value = TempData["value"];

使用保留您指定要保留的标记为删除的密钥。检索对象以及稍后将其从删除中保存它们是2个不同的调用。见msdn

//second request,get value marking it from deletion
object value = TempData["value"];
//later on decide to keep it
TempData.Keep("value");

//third request,read value and mark it for deletion
object value = TempData["value"];

当您始终希望保留另一个请求的值时,可以使用Peek。使用保留时保留值取决于附加逻辑。

您有2个关于TempData如何工作的好问题here和here

希望它帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读