ViewBag- MVC3-ASP.NET

时间:2011-06-24 10:02:24

标签: asp.net-mvc-3

我想在控制器中为ViewBag分配一个值,以便稍后在View中使用,它会抱怨以下错误。

像这样在Controller中分配值。

 ViewBag["isAdmin"]=true;

错误:

 Cannot apply indexing with [] to an expression of type 'System.Dynamic.DynamicObject'

以前有人有这个吗?

2 个答案:

答案 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

反之亦然。

关于这个概念的更多细节。