ViewBag- MVC3-ASP.NET

Har*_*ala 8 asp.net-mvc-3

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

像这样在Controller中分配值.

 ViewBag["isAdmin"]=true;
Run Code Online (Sandbox Code Playgroud)

错误:

 Cannot apply indexing with [] to an expression of type 'System.Dynamic.DynamicObject'
Run Code Online (Sandbox Code Playgroud)

以前有人有这个吗?

The*_*lTy 18

你需要的只是ViewBag.isAdmin = true.你可以访问的是

if(ViewBag.isAdmin)
{ 
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)


its*_*att 9

作为后续,ViewBag(和ViewData)背后的想法是,您可以存储键值对的东西,并在View中方便地访问它们.

使用ViewData,您可以像这样引用这些内容:

ViewData["SomeKey"] = someObject;
Run Code Online (Sandbox Code Playgroud)

如果你想使用ViewBag来做同样的事情(它提供了一个围绕该ViewData字典构造的包装,并使它更简洁,更具可读性),你可以引用如下内容:

ViewBag.isAdmin = true;

并且可以检查它们,如上面所说的tyrongower,像这样:

if (ViewBag.isAdmin)
{
   // do stuff
}
Run Code Online (Sandbox Code Playgroud)

当我使用这个构造时,我通常使用ViewBag语法,但它们确实引用了相同的东西.所以如果你在View之外做了类似的事情:

ViewData["isAdmin"] = true;

如果你这么倾向,你可以这样引用它:

ViewBag.isAdmin

或相反亦然.

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