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

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

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

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

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

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

2 ответа

Решение

Ты пытался

ViewBag.SuccessBody = TempData["successBody"];

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

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

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

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

ViewBag.MyItem

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

ViewData["MyItem"]

Другие вопросы по тегам