我想在控制器中为ViewBag分配一个值,以便稍后在View中使用,它会抱怨以下错误。
像这样在Controller中分配值。
ViewBag["isAdmin"]=true;
错误:
Cannot apply indexing with [] to an expression of type 'System.Dynamic.DynamicObject'
以前有人有这个吗?
答案 0 :(得分:18)
您所需要的只是ViewBag.isAdmin = true
。您可以访问
if(ViewBag.isAdmin)
{
//do stuff
}
答案 1 :(得分:9)
作为一个后续,ViewBag(和ViewData)背后的想法是你可以存储键值对的东西,并在视图中方便地访问它们。
使用ViewData,您可以像这样引用这些内容:
ViewData["SomeKey"] = someObject;
如果你想使用ViewBag做同样的事情(它提供了一个围绕该ViewData字典构造的包装,并使它更简洁,更具可读性),你可以参考这样的事情:
ViewBag.isAdmin = true;
并且可以像上面所述的tyrongower一样检查它们,如下所示:
if (ViewBag.isAdmin)
{
// do stuff
}
当我使用这个构造时,我通常使用ViewBag语法,但它们确实引用了相同的东西。所以如果你在View:
之外做了类似的事情 ViewData["isAdmin"] = true;
ViewBag.isAdmin
反之亦然。
关于这个概念的更多细节。