When I try to assign a value to the ViewBag I get the following error:

Cannot apply indexing with [] to an expression of type 'System.Dynamic.DynamicObject'

My code is as follows:

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

PS: Why I do this you may ask? Because I am redirecting to the Success action and I needed something that persists across redirects. Then, I am assigning the value to ViewBag in order to pass the Value to a 'shared' view.

有帮助吗?

解决方案

Have you tried

ViewBag.SuccessBody = TempData["successBody"];

其他提示

ViewBag is a dynamic wrapper for ViewData, so these two statements are the same:

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

ViewBag and ViewData seem kind of interchangable, but there are different rules as to how you access the data inside of them. Your issue pops up when you try to index into a ViewBag, which doesn't work.

For ViewBag, you dereference the items with a dot, like this.

ViewBag.MyItem

However, with ViewData, you access the items by indexing the appropriate key from the key value dictionary like this.

ViewData["MyItem"]

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top