are used to pass data from a Controller to a View, but they work differently. ViewData acts like a dictionary and holds data only for the current request, requiring type casting. ViewBag is a dynamic property, more readable, and also lasts only for the current request without needing type casting. TempData is designed to pass data from one request to the next, such as after a redirect, making it useful for short-lived messages. Understanding these differences helps in choosing the right method for data transfer in MVC applications.