36

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

无法使用 [] 将索引应用于“System.Dynamic.DynamicObject”类型的表达式

我的代码如下:

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

PS:你可能会问我为什么这样做?因为我正在重定向到 Success 操作,并且我需要在重定向中持续存在的东西。然后,我将值分配给 ViewBag 以便将值传递给“共享”视图。

4

3 回答 3

51

你有没有尝试过

ViewBag.SuccessBody = TempData["successBody"];
于 2013-12-20T21:15:15.760 回答
27

ViewBag 是 ViewData 的动态包装器,所以这两条语句是一样的:

ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
于 2013-12-20T21:17:06.223 回答
6

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

对于ViewBag,您使用点取消引用项目,如下所示。

ViewBag.MyItem

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

ViewData["MyItem"]

于 2019-04-08T03:46:15.993 回答