Ich habe einem Projekt eine cshtml-Seite hinzugefügt. Beim Versuch, die folgende Deklaration hinzuzufügen, wird die Fehlermeldung "Der Name 'Modell' existiert im aktuellen Kontext nicht" angezeigt.
@model xyz.abc.SomeClass
Ich habe die Referenzen überprüft, alle sind vorhanden. Ich habe eine web.config im Ansichtsordner hinzugefügt, aber das hat es nicht behoben.
Fehlt mir etwas?
asp.net-mvc-3
razor
user602737
quelle
quelle
Antworten:
Update: Wenn Sie eine neuere Version von MVC verwenden, gilt der gleiche Vorgang. Verwenden Sie nur die richtige Versionsnummer in der Zeile web.config
<host>
.Nun, ich habe das Gleiche erlebt wie Sie und nach ein wenig weiterer Recherche habe ich herausgefunden, wo das Problem liegt!
Sie müssen die Standard-MVC3-Datei web.config für den Ordner "Ansichten" angeben. MVC3 verfügt über zwei Optionen: eine im Stammverzeichnis für Ihre Anwendung und eine für den Ansichtsordner. Dies hat einen Abschnitt für eingeschlossene Namespaces. Stellen Sie sicher, dass Ihre ungefähr so aussieht:
Ich schlage vor, dass Sie ein neues MVC3-Projekt erstellen und dann einfach die für Sie erstellte web.config in Ihren Ansichtsordner kopieren.
Wichtig Sobald Sie dies getan haben, müssen Sie die Datei schließen und erneut öffnen. Voila! Intellisense!
quelle
MAIN
Stellen Sie sicher, dass Sie in Ihrer web.config-Datei<add key="webpages:Version" value="3.0.0.0" />
Ich bin auf dasselbe Problem gestoßen, als ich einen neuen Bereich zum Organisieren meiner Seiten erstellt habe. Meine Struktur sah aus wie:
WebProject
Die im Ordner "Ansichten" unter "WebProject" erstellten Ansichten funktionierten einwandfrei, die unter "NewArea" erstellten Ansichten haben jedoch den folgenden Fehler ausgelöst:
Um dies zu beheben, habe ich die Datei web.config im Ordner "Views" unter "WebProject" in den Ordner "Views" in NewArea kopiert. Siehe unten.
WebProject
Ich bin darauf gestoßen, weil ich diesen neuen Bereich manuell mit Hinzufügen -> Neuer Ordner erstellt habe, um die Ordner hinzuzufügen. Ich hätte mit der rechten Maustaste auf das Projekt klicken und Hinzufügen -> Bereich auswählen sollen. Dann hätte Visual Studio dafür gesorgt, dass der Bereich korrekt eingerichtet wurde.
quelle
Views/Web.config
aufSystem.Web.Mvc.MvcWebRazorHostFactory
Version 5.0.0.0 verwiesen, und ich hatte einen Bereich von Drittanbietern, der auf Version 4.0 verweist und mit dem die Ansichten zusammenarbeiten. Ich habeViews/Web.config
auf v4.0 zurückgesetzt und alles hat funktioniert.Wenn sich Ihre Ansichten in einer Klassenbibliotheksassembly befinden, die für die Wiederverwendung freigegebener Ansichten zwischen Projekten nützlich ist, reicht es möglicherweise nicht aus, nur das zu tun, was Adam vorschlägt. Trotzdem hatte ich immer noch Probleme.
Versuchen Sie dies in Ihrer web.config im Stammverzeichnis Ihres Projekts:
Und das in der web.config in Ihrem Ansichtsordner:
Das hat bei mir funktioniert. Ich habe jetzt Intellisense und keine Kompilierungsfehler in meinen Ansichten in einem Nicht-MVC-Projekt, auf die ich dann von mehreren MVC-Websites aus verweisen kann.
quelle
Ich bin auf dieses Problem gestoßen, als ich versehentlich eine Kopie der Ansichtsdatei (About.cshtml) für die Route / about im Stammverzeichnis hatte. (Nicht der Ansichtsordner) Nachdem ich die Datei aus dem Stammverzeichnis verschoben hatte, verschwand das Problem.
quelle
Hatte ähnliche Probleme mit VS2012 und VS2013.
Das Hinzufügen der folgenden Zeile zu <appSettings> in der Haupt-web.config hat funktioniert:
Wenn die Zeile bereits vorhanden war, aber 2.0.0.0 sagte, funktionierte das Ändern auf 3.0.0.0.
quelle
Update: 05.05.2015 Für Ihr MVC 5-Projekt müssen Sie die Version in Ihrer /views/web.config auf 5.0.0.0 einstellen
quelle
Während Sie das Modell oben in der Ansicht mit folgendem Code deklarieren:
Sie müssen Ihre Verweise darauf groß schreiben, zum Beispiel:
Ich glaube, eine fehlende web.config im Ordner "Ansichten" wäre die Hauptursache dafür. Wenn dies jedoch behoben ist und das Problem weiterhin besteht, überprüfen Sie, ob Sie " Modell" verwenden und nicht " Modell" , um in der Quelle darauf zu verweisen.
quelle
Ich bin auch auf dieses Problem gestoßen. Meine Umstände waren etwas anders.
Einer meiner Ansichtsordner wurde versehentlich in das Stammverzeichnis meines Projekts verschoben. Dies führte dazu, dass die Route
project_root/SignUp/ViewName
zuvor abgeglichen wurdeproject_root/Views/SignUp/ViewName
. Dies verursachte den@model
Fehler.Nachdem die Ansichten wieder an den entsprechenden Speicherort verschoben wurden, wurde das Verzeichnis im Projektstamm neu erstellt. Diesmal leer.
/SignUp/ViewName
funktionierte,/SignUp/
warf aber einen403 - Forbidden: Access is denied.
Fehler. Der gesamte Ordner muss aus dem Projektstamm entfernt werden.Ich hoffe das hilft jemandem. Ich habe stundenlang geglaubt, dass das Problem durch unser kürzlich durchgeführtes Upgrade von MVC 3 auf MVC 4 verursacht wurde. Nur ein Hinweis: Upgrade-Probleme sollten nur zwischen MVC 2 und MVC 3 auftreten. Wenn Sie dieses Problem in späteren Versionen sehen, liegt es wahrscheinlich nicht an der Aktualisierung.
quelle
Ich habe ewig gebraucht, um dieses Problem zu lösen, aber schließlich hoffe ich, dass ich es auf MVC gelöst habe, das ist ähnlich:
Ich habe ASP.NET 4.5 neu installiert ( http://www.asp.net/downloads )
Ich habe das Upgrade-Tutorial auf http://www.asp.net/whitepapers/mvc4-release-notes befolgt
ABER dieser erwähnte Absatz ist falsch für mich
Weil ich Razor in System.Web.Razor habe , habe ich den Rasiermessernamensraum in System.Web.Razor geändert.
Fügen Sie dies Ihrer web.config hinzu
Ich habe die Baugruppenreferenz zu all diesen Baugruppen oben hinzugefügt
Suchen Sie das ProjectTypeGuids-Element und ersetzen Sie {E53F8FEA-EAE0-44A6-8774-FFD645390401} durch {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Das ist alles.
quelle
<add key="webpages:Version" value="2.0.0.0" />
der treibende Faktor ist, wird die andere Einstellung nicht benötigt.3.0.0.0
aber ja das ist sehr wichtig!Es ist ein schrecklicher Fehler, aber:
Stellen Sie sicher, dass sich in Ihrer Ansicht bei Remote Web.config- Dateien befinden . Vielleicht haben Sie es übersprungen, um es über die Filter Ihres FTP-Programms hochzuladen.
quelle
Ich habe web.config unter Areas / MyArea / Views / web.config vermisst. Einmal hinzugefügt, hat es gut funktioniert. Dies war mit MVC 5 und .NET4.5
quelle
Es gibt noch einen anderen Grund. In meinem Fall hatte ich eine index.cshtml-Datei als Backup vom Remote-Server in den Webstammordner (außerhalb des Views-Ordners) kopiert.
Also habe ich meine /views/web.config immer wieder geändert, meine /views/home/index.cshtml immer wieder geändert und es ist immer wieder ein Fehler aufgetreten ... bis ich die /index.cshtml außerhalb des Views-Ordners herausgefunden habe, sie gelöscht habe und sicher, sie alles ging wieder normal!
quelle
Ich bin auf dasselbe Problem gestoßen, aber in meinem Fall hat sich nur geändert, dass ich Visual Studio 2012 deinstalliert und Visual Studio 2013 installiert habe. Ich habe unsere Lösung geöffnet, aber immer wieder die gleiche
The name 'model' does not exist in current context
in jeder Razor-Ansicht wurde Fehler angezeigt.Mein Kollege schlug vor, nach Updates für VS2013 zu suchen. Nachdem ich das VS2013 Update 1 installiert habe, wurde dieser Fehler nicht mehr angezeigt.
quelle
Überprüfen Sie Ihre Konfigurationsdatei im Ansichtsverzeichnis. Fügen Sie den Schlüssel für MVC 4/5 hinzu
quelle
Die Neuinstallation des Nugets löste das Problem für mich
PM> Installationspaket Microsoft.AspNet.Razor -Version 3.2.3
quelle
Für mich war das das Problem. Dieser ganze Block fehlte in der Sektion.
quelle
Ich habe das gleiche Problem nach dem Aktualisieren von Paketen. Ich habe das ganze Zeug gemacht, das Sie oben in diesem Thema geschrieben haben, aber die rote Basis des Modellschlüsselworts ist nicht verschwunden. Später gefundene Lösung: Ich habe gerade den Ordner 'package' aus dem Verzeichnis meines Projekts gelöscht und neu erstellt. In der Zwischenzeit konnte NuGet fehlende Pakete wiederherstellen. Erfrischt und fertig!
quelle
Überprüfen Sie, ob Ihre web.config-Datei in veröffentlichten Dateien vorhanden sein sollte
quelle
Ich hatte das gleiche Problem und finde dann eine Lösung. Die Lösung ist:
Die .suo- Datei ist eine versteckte Datei in demselben Ordner, in dem sich die .svn- Lösungsdatei befindet. Hoffe, es wird funktionieren!
quelle