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

问题描述 投票:24回答:3

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

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

我的代码如下:

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

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

c# asp.net-mvc viewbag dynamicobject
3个回答
33
投票

你有没有尝试过

ViewBag.SuccessBody = TempData["successBody"];

21
投票

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

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

2
投票

ViewBagViewData似乎是可互换的,但是如何访问它们内部的数据有不同的规则。当您尝试索引到ViewBag时,会弹出您的问题,但这不起作用。

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

ViewBag.MyItem

但是,使用ViewData,您可以通过索引键值字典中的相应键来访问这些项目。

ViewData["MyItem"]

© www.soinside.com 2019 - 2024. All rights reserved.