When an object in a TempDataDictionary is read, it will be marked for deletion at the end of that request. That means if you put something on TempData like TempData [ "value" ] = "someValueForNextRequest" ; And on another request you access it, the value will be there but as soon as you read it, the value will be marked for deletion: //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 The Peek and Keep methods allow you to read the value without marking it for deletion. Say we get back to the first request where the value was saved to TempData. With Peek you get the value without marking it for deletion with a single call, see msdn : //second request, PEEK value so it is not deleted at the end of the request object value = TempData . Peek ( "value"...