danila_net
@danila_net
Изучаю CLR, C#, ASP.NET

Как записать ViewBag, чтобы передать данные из Controller в View?

В контроллере я указал ViewBag.GomelNS1_Level_Tank400_1 = 7777777;
при выводе во view @ViewBag.GomelNS1_Level_Tank400_1 дает результат 7777777
но когда я вывожу @ViewBag.@item.opc_TAG (где opc_TAG=GomelNS1_Level_Tank400_1 ) результат: System.Web.Mvc.DynamicViewDataDictionary.GomelNS1_Level_Tank400_1.
Почему так???????
Если выводить ITem.opc_TAG результат будет GomelNS1_Level_Tank400_1 все правильно.
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
PinoyExplorer
@PinoyExplorer
Software Developer
ViewBag передает данные из контроллера в представление. Его удобно использовать, когда временные данные не содержатся в модели, и соотвтественно не могут быть переданы из контроллера в представление. Свойства для ViewBag создаются динамически в пределах текущего HTTP Запроса. Если копнуть глубже то VeiwBag, является оболочкой над более простой конструкцией ViewData. ViewData это просто динамически создаваемы словарь, где есть Ключ и есть Значение. И вот эта пара сохраняется, до тех пор пока актуально исполнение кода контроллера и переход к его представлению. Любое другое перенаправление исполнение кода, приводит к потере значений этой пары. Из Вашего вопроса мало что можно понять, но все же...@ViewBag.@item.opc_TAG (где opc_TAG=GomelNS1_Level_Tank400_1 ). В этой строчке вы как то переназначаете один Ключ на другой Ключ. Где и когда это происходит непонятно. В ответ вы получаете проблемы с System.Web.Mvc.DynamicViewDataDictionary.GomelNS1_Level_Tank400_1.
Вот в этом коммите, в контреллере, из БД извлекается список Категорий, для Товаров интернет магазина. Далее этот объект, передается в новое свойство во ViewBag. Далее возврат из контроллера происходит только в одно представление, в котором и запрашивается, искомый список категорий, для вывода в этом представлении. Код проект рабочий и написан для ASP.NET Core MVC на .NET5.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы