无法将带有[]的索引应用于"System.Dynamic.DynamicObject"类型的表达式

Rea*_*ion 27 c# asp.net-mvc dynamicobject viewbag

当我尝试为ViewBag分配值时,我收到以下错误:

无法将带有[]的索引应用于"System.Dynamic.DynamicObject"类型的表达式

我的代码如下:

public ActionResult Success()
{
   ViewBag["SuccessBody"] = TempData["successBody"];
   return View();
}
Run Code Online (Sandbox Code Playgroud)

PS:为什么我这样做你可能会问?因为我正在重定向到Success动作,所以我需要在重定向中保留的东西.然后,我将值分配给ViewBag,以便将值传递给"共享"视图.

Sli*_*k86 37

你有没有尝试过

ViewBag.SuccessBody = TempData["successBody"];
Run Code Online (Sandbox Code Playgroud)


Moe*_*eri 22

ViewBag是ViewData的动态包装器,因此这两个语句是相同的:

ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
Run Code Online (Sandbox Code Playgroud)


Fox*_*loy 6

ViewBag并且ViewData似乎可以互换,但是对于如何访问其中的数据有不同的规则。当您尝试索引 a 时ViewBag,您的问题会弹出,但它不起作用。

对于ViewBag,您可以像这样用点取消引用项目。

ViewBag.MyItem

但是,使用ViewData,您可以通过像这样从键值字典中索引适当的键来访问项目。

ViewData["MyItem"]