Невозможно применить индексирование с помощью [] к выражению типа 'System.Dynamic.DynamicObject'
Когда я пытаюсь присвоить значение ViewBag, я получаю следующую ошибку:
Невозможно применить индексирование с помощью [] к выражению типа 'System.Dynamic.DynamicObject'
Мой код выглядит следующим образом:
public ActionResult Success()
{
ViewBag["SuccessBody"] = TempData["successBody"];
return View();
}
PS: почему я это делаю, спросите вы? Потому что я перенаправляю на действие Успех, и мне нужно что-то, что сохраняется при перенаправлениях. Затем я присваиваю значение ViewBag, чтобы передать значение в "общий" вид.
2 ответа
ViewBag - это динамическая оболочка для ViewData, поэтому эти два оператора одинаковы:
ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
ViewBag
а также ViewData
кажутся взаимозаменяемыми, но существуют разные правила доступа к данным внутри них. Ваша проблема всплывает, когда вы пытаетесь проиндексировать в ViewBag
, который не работает.
За ViewBag
Вы разыменовываете элементы с точкой, как это.
ViewBag.MyItem
Однако с ViewData
Вы получаете доступ к элементам, индексируя соответствующий ключ из словаря значений ключей, как это.
ViewData["MyItem"]