猿问

TempData keep()与peek()

keep()和peek()有什么区别?

MSDN说:

  • 保持(): marks the specified key in the dictionary for retention.

  • 窥视(): returns an object that contains the element that is associated with the specified key, without marking the key for deletion.

我不能真正知道有什么区别,难道它们都为另一个请求保留了价值吗?


一只名叫tom的猫
浏览 783回答 3
3回答

PIPIONE

TempDataDictionary读取中的对象时,该对象将在该请求结束时标记为删除。这意味着如果您在TempData上放一些东西TempData["value"] = "someValueForNextRequest";并且在您访问它的另一个请求中,该值将存在,但是一旦您读取它,该值将被标记为删除://second request, read value and is marked for deletionobject value = TempData["value"];//third request, value is not there as it was deleted at the end of the second requestTempData["value"] == null该Peek和Keep方法,使您无需将其标记为删除读取值。假设我们回到第一个将值保存到TempData的请求。有了Peek该值,而没有通过一次调用将其标记为删除,请参见msdn://second request, PEEK value so it is not deleted at the end of the requestobject value = TempData.Peek("value");//third request, read value and mark it for deletionobject value = TempData["value"];用Keep您指定要保留的标记为删除的密钥。检索对象并随后保存以将其删除,这是两个不同的调用。参见msdn//second request, get value marking it from deletionobject value = TempData["value"];//later on decide to keep itTempData.Keep("value");//third request, read value and mark it for deletionobject value = TempData["value"];您可以Peek在始终希望保留其他请求的值时使用。Keep保留值时使用取决于其他逻辑。关于TempData 在这里和这里的工作方式,您有两个很好的问题希望能帮助到你!

qq_花开花谢_0

TempData还是一个字典对象,在HTTP请求期间一直存在。因此,TempData可用于维护一个控制器动作与另一控制器动作之间的数据。TempData每次用于检查空值。TempData包含两个方法keep()和peek(),用于维护从一个控制器动作到其他控制器动作的数据状态。当 TempDataDictionary 对象被读取时,在请求的标记的结束作为删除到当前读取对象。的保持()和PEEK()方法用于无缺失读取数据中的当前读取的对象。当您始终想保留/阻止其他请求的值时,可以使用Peek()。当阻止/保持该值取决于其他逻辑时,可以使用Keep()。TempData.Peek()和TempData.Keep()中的重载如下所示。TempData.Keep()有2个重载方法。void keep():威胁所有在当前请求完成时未删除的数据。void keep(字符串键):借助名称将特定项保留在TempData中。TempData.Peek()没有重载方法。object peek(字符串键):返回一个对象,其中包含具有特定键的项目,而不需要删除键。下面给出了TempData.Keep()和TempData.Peek()方法的返回类型的示例。public void Keep(字符串键){_retainedKeys.Add(key); }公共对象Peek(字符串键){对象值=值;返回值 }
随时随地看视频慕课网APP
我要回答