2011-01-17 24 views
11

Recientemente instalé ASP.NET MVC 3 mediante el instalador de plataforma web. No tengo el soporte intellisense para ViewBag en la vista Razor. Intellisense funciona bien con el modelo en la vista Razor. Traté de reconstruir la solución, deshabilitar ReSharper ... pero no pude hacer que funcione.
ASP.NET MVC 3: la propiedad ViewBag no proporciona IntelliSense

Cualquier ayuda sería muy apreciada.

Respuesta

38

La propiedad ViewBag se escribe como dynamic, lo que significa que no hay IntelliSense.

ViewBag es una sintaxis alias/alternativa para acceder al diccionario ViewData. Las dos siguientes líneas de código son equivalentes:

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

ViewBag ofrece una sintaxis ligeramente más concisa que ViewData. También tenga en cuenta que el acceso a ViewData utilizando claves de cadena tampoco proporciona IntelliSense, por lo que realmente no pierde ninguna funcionalidad.

Una última nota es que ViewBag y ViewData utilizan el mismo almacenamiento de respaldo, por lo que la creación de un establecimiento a través de un método lo hace disponible con el otro método:

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

Visual Studio muestra una línea roja debajo de 'ViewBag', que parece un error, muy molesto, ¿hay alguna configuración para deshabilitarlo. –

+0

El mismo problema que con Eric Yin, en las Vistas, las marcas rojas en ViewBag y HTML.TextBoxFor(), etc ... los errores indican que falta una referencia, pero ¿cuál? – Nestor

9

Agregando a la respuesta de marcind del ViewBag ser dinámicos :

Si desea intelisense, entonces vas a tener que pasar un objeto fuertemente tipado y luego, en su opinión, se puede establecer: @model Namespace.YourModel que le dará intelliSense cuando intenta hacer @Model.Property