当我尝试为ViewBag分配值时,出现以下错误:
无法将带有[]的索引应用于“System.Dynamic.DynamicObject”类型的表达式
我的代码如下:
public ActionResult Success()
{
ViewBag["SuccessBody"] = TempData["successBody"];
return View();
}
PS:为什么我这样做你可能会问?因为我正在重定向到Success动作,所以我需要在重定向中保留的东西。然后,我将值分配给ViewBag,以便将值传递给“共享”视图。
答案 0 :(得分:33)
你试过吗
ViewBag.SuccessBody = TempData["successBody"];
答案 1 :(得分:21)
ViewBag是ViewData的动态包装器,因此这两个语句是相同的:
ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
答案 2 :(得分:1)
ViewBag
和ViewData
似乎可以互换,但是关于如何访问其中的数据有不同的规则。当您尝试索引到ViewBag
时,您的问题会弹出,这不起作用。
对于ViewBag
,您可以使用点取消引用这些项目,
ViewBag.MyItem
但是,使用ViewData
,您可以通过从键值字典中索引适当的键来访问这些项。
ViewData["MyItem"]