Asp.net mvc 3 ViewBag-MVC3-ASP.NET
我试图为控制器中的ViewBag分配一个值,以便以后在视图中使用,它会出现以下错误 像这样在控制器中赋值Asp.net mvc 3 ViewBag-MVC3-ASP.NET,asp.net-mvc-3,Asp.net Mvc 3,我试图为控制器中的ViewBag分配一个值,以便以后在视图中使用,它会出现以下错误 像这样在控制器中赋值 ViewBag["isAdmin"]=true; 错误: Cannot apply indexing with [] to an expression of type 'System.Dynamic.DynamicObject' 以前有人有过这个吗?您只需要ViewBag.isAdmin=true。您可以访问的是 if(ViewBag.isAdmin) { //do stu
ViewBag["isAdmin"]=true;
错误:
Cannot apply indexing with [] to an expression of type 'System.Dynamic.DynamicObject'
以前有人有过这个吗?您只需要
ViewBag.isAdmin=true
。您可以访问的是
if(ViewBag.isAdmin)
{
//do stuff
}
作为后续,ViewBag(和ViewData)背后的思想是,您可以存储内容的非键值对,并方便地在视图中访问它们 使用ViewData,您可以这样引用这些内容:
ViewData["SomeKey"] = someObject;
如果您想使用ViewBag来执行相同的操作(它提供了对ViewData字典构造的包装,使其更简洁,可读性更强),您可以参考以下内容:
ViewData["SomeKey"] = someObject;
ViewBag.isAdmin=true代码>
并且可以检查它们,正如tyrongower上面所说的那样:
if (ViewBag.isAdmin)
{
// do stuff
}
当我使用这个构造时,我通常使用ViewBag语法,但它们确实引用了相同的东西。如果你在视野之外做了这样的事情:
ViewData[“isAdmin”]=true代码>
如果你愿意,你可以这样引用:
ViewBag.isAdmin
反之亦然
关于这个概念再详细一点。ViewBag
是动态的
类型,因此您可以使用点符号。但是ViewData
属于Dictionary
(well-ViewDataDictionary)类型,因此必须使用索引来指定键。