2011-01-17 12 views
11

Niedawno zainstalowałem program ASP.NET MVC 3 za pośrednictwem instalatora platformy internetowej. Nie mam obsługi intellisense dla ViewBag w widoku Razor. Intellisense działa dobrze z modelem w widoku Razor. Próbowałem przebudować rozwiązanie, wyłączyć program ReSharper ... ale nie mogłem go uruchomić.
ASP.NET MVC 3 - Właściwość ViewBag nie zapewnia technologii IntelliSense

Każda pomoc zostanie bardzo doceniona.

Odpowiedz

38

Właściwość ViewBag została wpisana jako dynamic, co oznacza, że ​​nie ma technologii IntelliSense.

ViewBag to alias/alternatywna składnia do uzyskiwania dostępu do słownika ViewData. Dwa następujące wiersze kodu są równoważne:

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

ViewBag oferuje nieco terser składnię niż ViewData. Zauważ również, że dostęp do ViewData za pomocą kluczy ciągów nie zapewnia również technologii IntelliSense, więc nie tracisz żadnej funkcjonalności.

ostatnia uwaga jest taka, że ​​ViewBag i ViewData używać tego samego przechowywanie podłożu, tak że ustawienie właściwości przy użyciu jednej metody sprawia, że ​​jest dostępny przy użyciu innej metody:

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

Visual Studio pokazuje czerwoną linię pod 'ViewBag', która wygląda jak błąd, bardzo denerwujące, czy jest jakieś ustawienie, aby ją wyłączyć. –

+0

Ten sam problem, co w przypadku Eric Yin, w widokach, czerwone znaczniki pod ViewBag i HTML.TextBoxFor() itp. ... błędy wskazują, że brakuje odnośnika, ale który? – Nestor

9

dodając do odpowiedzi marcind jest z ViewBag jest dynamiczny :

Jeśli chcesz intellisense, to będziemy musieli przejść w silnie typami obiektu, a następnie w widoku, można ustawić: @model Namespace.YourModel które dadzą Ci intellisense podczas próby zrobić @Model.Property

Powiązane problemy