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