2010-12-11 8 views
25

Ich habe gerade auf ASP.NET MVC 3 RC2 aktualisiert.Upgrade auf MVC 3: CS0103: Der Name "View" existiert im aktuellen Kontext nicht

Die Probe app ich arbeite auf jetzt her mit den folgenden Fehler, sobald eine cshtml Ansicht wiedergegeben wird:

CS0103: Der Name ‚Ansicht‘ existiert nicht im aktuellen Kontext

es auf dem versagt Zeile:

@{ 
    View.Title = "MyView"; 
} 

... und an anderer Stelle, an der es auftrifft, im Code der Razor-Datei angezeigt wird.

Ich habe die web.config aus einem neuen apps View-Ordner in meine Beispielanwendung kopiert, aber das Problem bleibt bestehen.

Eine brandneue Anwendung läuft ohne Probleme.

Ich habe auch die Lösung neu erstellt, führen Sie Clean Solution. Keine Freude.

Ich habe nicht für ein paar Tage an der Probe gearbeitet. Es könnte also ein Problem sein, das nichts mit RC2 zu tun hat ...

+0

Überprüfen Sie die Referenzen, sie scheinen die gleiche Dateiversion zu sein. EG: System.Web.Mvc Datei Version: 3.11209.0 für meine Beispiel-App, entwickelt mit RC1 und eine neue App erstellt mit RC2 – awrigley

Antwort

27

Es wurde in 'ViewBag' umbenannt. Sie können mehr über die Änderungen von RC1 lesen -> RC2 here

+0

Danke, ich hatte diesen Teil des Scott Guthrie Blogposts übersehen. Ich weiß nicht, warum Sie denken, dass es seltsam ist - es ist in Ordnung, Anzeigelogik in den Ansichten zu haben. Viele Proben verwenden das. Ich denke, ViewBag ist ein schrecklicher Name, aber es ist beschreibender als einfach nur Ansicht. – awrigley

+0

@awrigley sicher, dass es gut ist, Anzeigelogik in der Ansicht zu verwenden, aber der ViewBag soll eine Sammlung von Eigenschaften sein, die normalerweise in der Steuerung für die Ansicht verwendet werden ... Ich bin sicher, dass Sie eine gültige Verwendung haben Fall, aber ich sehe nicht, warum Sie Daten in der ViewBag innerhalb der Ansicht festlegen möchten, würde ich erwarten, nur davon zu lesen. – jeroenh

+2

sicher, aber das MVC3-Beispiel verwendet diesen Code ... – awrigley

4

ich hatte das gleiche Problem, aber ich habe gerade versucht, zu erraten, was jetzt zu verwenden, ich landete mit:

@Page.Title = "The title" 

und es funktionierte, obwohl ich nicht sicher bin, was die „best practice“ jetzt

auch ist, dachte ich, dass das, was ViewBag Ansichtsmodell verwendet werden soll, nicht anzeigen nur

0

ich dies für den Fall, jemand anderes bin Zugabe kommt über es. Eine andere mögliche Ursache ist, dass Ihr Layout nicht gefunden wurde. Ich habe den IIS bereitgestellt und festgestellt, dass das Layout nach dem Auskommentieren der fehlerhaften Zeile nicht während der Webbereitstellung kopiert wurde. In meinem Fall lag das daran, dass die Build Action des Layouts von "Content" zu "None" geändert wurde.

EDIT: In der Tat hatte ich MVC 3 RC installiert. Das obige war nur ein anderes Symptom. Der Deployment-Rechner hatte RTM, wodurch das Problem aufgedeckt wurde. Wie awrigley sagt, heißt es jetzt ViewBag.

+0

danke, aber das Problem in meinem Fall war die Umbenennung der Eigenschaft zu ViewBag. – awrigley

Verwandte Themen