ASP.NET MVC 3 - свойство ViewBag не предоставляет IntelliSense

Недавно я установил ASP.NET MVC 3 через установщик веб-платформы. У меня нет поддержки Intellisense для ViewBag в режиме Razor. Intellisense отлично работает с моделью в режиме Razor. Я попытался восстановить решение, отключить ReSharper... но я не мог заставить его работать.

Любая помощь будет принята с благодарностью.

Ответ 1

Свойство ViewBag вводится как dynamic, что означает, что IntelliSense не существует.

ViewBag - это псевдоним/альтернативный синтаксис для доступа к словарю ViewData. Две следующие строки кода эквивалентны:

ViewBag.Message = "My message";
ViewData["Message"] = "My message";

ViewBag предлагает синтаксис немного синтаксиса, чем ViewData. Также обратите внимание, что доступ к ViewData с использованием строковых ключей также не обеспечивает IntelliSense, поэтому вы действительно не теряете никаких функций.

Последнее замечание состоит в том, что ViewBag и ViewData используют одно и то же фоновое хранилище, поэтому установка свойства с использованием одного метода делает его доступным с использованием другого метода:

ViewBag.Message = "My message";
string message = ViewData["Message"];
// message is now "My message"

Ответ 2

Добавление к marcind ответу ViewBag, являющегося динамическим:

Если вы хотите intellisense, тогда вам придется проходить в строго типизированном объекте, а затем, по вашему мнению, вы можете установить: @model Namespace.YourModel, который даст вам intellisense, когда вы попытаетесь сделать @Model.Property