ViewBag- MVC3-ASP.NET - PullRequest
       2

ViewBag- MVC3-ASP.NET

8 голосов
/ 24 июня 2011

Я пытаюсь присвоить значение ViewBag в контроллере для дальнейшего использования в представлении, он жалуется на следующую ошибку.

Назначение значения в контроллере следующим образом.

 ViewBag["isAdmin"]=true;

Ошибка:

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

Кто-нибудь имел это раньше?

Ответы [ 2 ]

18 голосов
/ 24 июня 2011

Все, что вам нужно, это ViewBag.isAdmin = true. вы можете получить доступ с

if(ViewBag.isAdmin)
{ 
    //do stuff
}
9 голосов
/ 25 июня 2011

В качестве продолжения идея ViewBag (и ViewData) заключается в том, что вы можете хранить пары «ключ-значение» и легко получать к ним доступ в представлении.

С помощью ViewData вы ссылаетесь на следующие вещи:

ViewData["SomeKey"] = someObject;

Если вы хотите сделать то же самое, используя вместо этого ViewBag (который обеспечивает обертывание вокруг словарной конструкции ViewData и делает ее немного менее многословной и немного более читаемой), вы ссылаетесь на такие вещи:

ViewBag.isAdmin = true;

и может проверить их, как указано выше, например:

if (ViewBag.isAdmin)
{
   // do stuff
}

Обычно я использую синтаксис ViewBag, когда использую эту конструкцию, но они действительно ссылаются на один и тот же материал. Так что если вы сделали что-то подобное за пределами View:

ViewData["isAdmin"] = true;

вы могли бы сослаться на это так, если бы вы были так склонны:

ViewBag.isAdmin

или наоборот.

Еще немного подробнее о концепции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...