ViewBag и ViewData - это два средства, которые используются для передачи информации от контроллера для просмотра в ASP.Net MVC.Цель использования обоих механизмов - обеспечить связь между контроллером и View.Оба имеют короткую жизнь, то есть значение обоих становится нулевым, как только происходит перенаправление, т. Е. После перенаправления страницы с исходной страницы (где мы устанавливаем значение ViewBag или ViewData) на целевую страницу, как ViewBag, так и ViewDataстановится нулевым.
Несмотря на то, что оба этих сходства (ViewBag и ViewData) - это две разные вещи, если мы говорим о реализации обоих.Различия заключаются в следующем:
1.) Если мы проанализируем оба варианта реализации, то обнаружим, что ViewData представляет собой структуру данных словаря - Словарь объектов, производный от ViewDataDictionary и доступный с использованием строк в качестве ключей для этих значений, тогда как ViewBagиспользует динамические функции, представленные в C # 4.0, и является динамическим свойством.
2.) При доступе к значениям из ViewData нам необходимо типизировать значения (типы данных), поскольку они хранятся в виде объектов в объекте.Словарь ViewData, но в этом нет необходимости, если мы обращаемся к этому значению в случае ViewBag.
3.) В ViewBag мы можем установить значение следующим образом:
ViewBag.Name = "Value";
и можем получить доступследующим образом:
@ViewBag.Name
Хотя в случае ViewData значения могут быть установлены и доступны следующим образом: Установка ViewData выполняется следующим образом:
ViewData["Name"] = "Value";
и доступ к значению, подобному этому
@ViewData["Name"]
Для более подробной информации нажмите здесь: