2011-01-17 7 views
11

Recentemente ho installato ASP.NET MVC 3 tramite il programma di installazione della piattaforma web. Non ho il supporto intellisense per ViewBag in Razor view. Intellisense funziona bene con il modello in modalità Rasoio. Ho provato a ricostruire la soluzione, disabilitare ReSharper ... ma non riuscivo a farlo funzionare.
ASP.NET MVC 3 - La proprietà ViewBag non fornisce IntelliSense

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

38

La proprietà ViewBag viene digitata come dynamic, il che significa che non è presente IntelliSense.

ViewBag è un alias/sintassi alternativa per l'accesso al dizionario ViewData. Le due righe di codice seguenti sono equivalenti:

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

ViewBag offre una sintassi leggermente terser di ViewData. Si noti inoltre che l'accesso a ViewData tramite chiavi di stringa non fornisce nemmeno IntelliSense, quindi non si perde alcuna funzionalità.

Un'ultima nota è che ViewBag e ViewData utilizzano la stessa archiviazione secondaria, in modo che impostando una proprietà utilizzando un metodo rende disponibile utilizzando l'altro metodo:

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

Visual Studio mostra una linea rossa sotto 'ViewBag', che sembra un errore, molto fastidioso, c'è qualche impostazione per disabilitarlo. –

+0

Lo stesso problema con Eric Yin, nelle viste, i segni rossi sotto ViewBag e HTML.TextBoxFor(), ecc ... dice che manca un riferimento, ma quale? – Nestor

9

aggiunta alla risposta di marcind del ViewBag essere dinamico :

Se si desidera intelliSense, allora si sta andando ad avere per passare in un oggetto fortemente tipizzato e quindi a suo avviso, è possibile impostare: @model Namespace.YourModel che vi darà intelliSense quando si tenta di fare @Model.Property