Когда использовать ViewBag, ViewData или TempData в Mvc3 - программирование
Подтвердить что ты не робот

Когда использовать ViewBag, ViewData или TempData в Mvc3

Когда использовать ViewBag, ViewData или TempData в представлении. В контроллере я хочу отправить объект в view.I хочу знать, что будет лучше в этом случае. Я хочу объект на странице просмотра.

4b9b3361

Ответ 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 только для сообщений статуса или объекта, который вы не хотите кэшировать, но не доступен только для самого следующего запроса.