Ответ 1
Используйте TempData, когда вам нужны данные только для следующего запроса.
TempData["myInfo"] = "my info";
Затем в следующем запросе он будет там... но после этого он исчезнет.
Используйте ViewBag для большей части ваших дополнительных данных, чтобы перейти к вашему представлению, помимо @model
ViewBag.MyInfo = "my info";
Затем получите доступ к нему из вашего представления.
Используйте ViewData для доступа/ввода той же информации, что и ViewBag, за исключением как коллекции вместо свойств динамического объекта.
ViewData["MyInfo"]
обращается к тем же данным, что и ViewBag.MyInfo
Обратите внимание, что я использовал строки, но они могут хранить любой желаемый объект.
Еще одна вещь, которую следует отметить: TempData и ViewData - это словари, которые хранят значения объектов, поэтому при их использовании вы должны отнести их к их исходному типу. Однако ViewBag использует динамический режим, и вам не всегда нужно это делать, поскольку он выполняется во время выполнения. Некоторые методы (например, методы расширения) не могут обрабатывать динамические, поэтому вам нужно будет указать их в этих случаях.