Невозможно применить индексирование с [] к выражению типа "System.Dynamic.DynamicObject"

Когда я пытаюсь назначить значение ViewBag, я получаю следующую ошибку:

Невозможно применить индексирование с [] к выражению типа "System.Dynamic.DynamicObject"

Мой код выглядит следующим образом:

public ActionResult Success()
{
   ViewBag["SuccessBody"] = TempData["successBody"];
   return View();
}

PS: Почему я это делаю, вы можете спросить? Потому что я перенаправляюсь на действие "Успех", и мне нужно что-то, что сохраняется в перенаправлении. Затем я присваиваю значение ViewBag, чтобы передать значение в "общий" вид.

Ответы

Ответ 1

Вы пробовали

ViewBag.SuccessBody = TempData["successBody"];

Ответ 2

ViewBag - это динамическая оболочка для ViewData, поэтому эти два утверждения одинаковы:

ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];

Ответ 3

ViewBag и ViewData кажутся взаимозаменяемыми, но существуют разные правила доступа к данным внутри них. Ваша проблема появляется, когда вы пытаетесь проиндексировать ViewBag, который не работает.

Для ViewBag вы разыменовываете элементы с точкой, как это.

ViewBag.MyItem

Однако с помощью ViewData вы ViewData доступ к элементам, индексируя соответствующий ключ из словаря значений ключей, как этот.

ViewData["MyItem"]