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