Ich habe eine Webanwendung, an der ich arbeite (ASP.NET2.0 mit C # unter Verwendung von VS2005). Alles hat gut funktioniert und plötzlich bekomme ich den Fehler:
Error 1 The name 'Label1' does not exist in the current context
und 43 andere der Art für jedes Mal, wenn ich ein Steuerelement in meinem Code hinter der Seite verwendet habe.
Dies geschieht nur für 1 Seite. Und es ist, als ob der Codebehind die Steuerelemente nicht erkennt. Eine andere interessante Sache ist, dass der Intellisense auch keine der Steuerelemente aufnimmt.
Ich habe versucht, die Lösungsdatei zu bereinigen, die obj-Datei zu löschen, die Dateien aus dem Projekt auszuschließen, sie dann erneut hinzuzufügen, VS zu schließen und neu zu starten und sogar meinen Computer neu zu starten, aber keine davon hat funktioniert.
quelle
Antworten:
Überprüfen Sie Ihren Code hinter dem Dateinamen und der Inherits-Eigenschaft in der @ Page-Direktive und stellen Sie sicher, dass beide übereinstimmen.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich hatte ein ähnliches Problem und wollte meine Lösung veröffentlichen, falls es jemand anderem zugute kommen könnte. Ich bin auf das Problem gestoßen, als ich gelernt habe, Folgendes zu verwenden:
Ich habe versucht, eine AJAX-fähige Seite zu erstellen (lesen Sie ein Tutorial zur Verwendung des ScriptManager-Objekts, wenn Sie damit nicht vertraut sind). Ich habe versucht, über den C # -Code auf die HTML-Elemente auf der Seite zuzugreifen, und es wurde eine Fehlermeldung angezeigt, dass der Bezeichner für den HTML-ID-Wert "im aktuellen Kontext nicht vorhanden" ist.
Um es zu lösen, musste ich Folgendes tun:
1. Führen Sie den Server aus
Um auf das HTML-Element als Variable im C # -Code zuzugreifen, muss der folgende Wert in das HTML-Element-Tag in der Aspx-Datei eingefügt werden:
runat="server"
Einige Objekte in der Toolbox in der Visual Studio-IDE enthalten diesen Wert nicht automatisch, wenn sie zur Seite hinzugefügt werden.
2. Generieren Sie die automatisch generierte C # -Datei neu:
Jetzt sollte das Element in der C # -Code-Datei zugänglich sein.
quelle
Schließen Sie alle anderen Seiten aus, die auf dieselbe CodeBehind-Datei verweisen, z. B. eine ältere Seite, die Sie kopiert und eingefügt haben.
quelle
Ich hatte das gleiche Problem. Es stellt sich heraus, dass ich sowohl "MyPage.aspx" als auch "Kopie von MyPage.aspx" in meinem Projekt hatte.
quelle
Stellen Sie außerdem sicher, dass Sie keine Dateien haben, die versehentlich versuchen, dieselbe (Teil-) Klasse wie andere Dateien zu erben oder zu definieren. Beachten Sie, dass diese Dateien möglicherweise nicht mit den Dateien zusammenhängen, in denen der Fehler tatsächlich aufgetreten ist!
quelle
Ich bin auf denselben Fehler gestoßen, außer dass es sich um einen WPF-Fehler handelte. Ich habe Projekte neu angeordnet und eine Steuerung wie folgt definiert:
<local:CustomControl Name="Custom" />
In meinem Code dahinter habe ich versucht, Custom.Blah zu verwenden, aber ich habe den Fehler erhalten:
The name 'Custom' does not exist in the current context
Was für mich der Trick war, war meine Kontrolle in Xaml dahingehend zu ändern:
<local:CustomControl x:Name="Custom" />
Hoffe das hilft jemandem da draußen!
quelle
Ich erhalte den gleichen Fehler, nachdem ich Änderungen an meinem Datenkontext vorgenommen habe. Aber ich stoße auf etwas, mit dem ich nicht vertraut bin. Ich gewöhne mich daran, meine Dateien manuell zu veröffentlichen. Wenn ich das tue, wird normalerweise kein App_Code-Ordner im Veröffentlichungsordner angezeigt. Bu i begann mit der Verwendung von VS 12 Publishing, das mit Ihrer Hilfe auf dem Webserver direkt veröffentlicht wird. Und dann bekomme ich den Fehler, eine vorkompilierte Anwendung zu sein. Dann lösche ich den Ordner app_code, der funktioniert hat. Aber dann gab es mir den Datenkontextfehler, den Sie erhalten. Also habe ich einfach alle Dateien gelöscht und die Veröffentlichung ohne Dateibeschränkungen erneut ausgeführt (jeder Ordner und jede Datei wird veröffentlicht), dann hat es wie ein Zauber funktioniert.
quelle
Ich hatte das gleiche Problem, mein Problem war, keinen Platz zwischen zwei Attributen zu haben. "
AutoGenerateColumns="False"DataKeyNames="ProductID"
anstatt
AutoGenerateColumns="False" DataKeyNames="ProductID"
quelle
Ich habe dies in meinem Projekt behoben, indem ich die aktuellen Dateien gesichert habe (also hatte ich immer noch meinen Code), den aktuellen Aspx (und die untergeordneten Seiten) gelöscht, einen neuen erstellt und den Inhalt der Sicherungsdateien in die neuen Dateien kopiert habe.
quelle
Dieser Fehler tritt häufig auf, wenn Sie ihn verpassen
runat="server"
.quelle
Die oben angebotene Lösungsoption Nr. 2 funktioniert für Windows Forms-Anwendungen und nicht für Web-Aspx-Anwendungen. Ich habe einen ähnlichen Fehler in der Webanwendung erhalten. Ich habe diesen Fehler behoben, indem ich eine Datei gelöscht habe, in der ich ein Benutzersteuerelement mit demselben Namen hatte. Diese Aspx-Datei war eigentlich eine Sicherungsdatei und wurde nirgendwo im Prozess referenziert, aber sie hat den Fehler trotzdem verursacht, weil Der Name des in der Sicherungsdatei registrierten Benutzersteuerelements wurde in der Aspx-Datei, auf die im Prozessablauf verwiesen wurde, genau gleich benannt. Also habe ich die Sicherungsdatei gelöscht und die Lösung erstellt, die Erstellung war erfolgreich.
Hoffe das hilft jemandem in einem ähnlichen Szenario.
Vijaya Laxmi.
quelle
Ich hatte das gleiche Problem, da ich versuchte, die Aspx-Datei aus einem Visual Studio 2010-Projekt neu zu erstellen, sodass die Steuerelemente die Eigenschaft clientidmode = "Static" hatten. Wenn dies entfernt wurde, wurde es behoben.
quelle
Ich hatte ein ähnliches Problem beim Optimieren mit einem Repeater, nachdem ich ihn aus einer Datenliste konvertiert hatte.
Das Problem war, dass ich beim Löschen eines nicht benötigten Attributs versehentlich zwei Attribute vereint habe.
<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS"> . . . </asp:Repeater>
Dies verhinderte die Erzeugung des Repeaters in der Designdatei.
quelle
Ich hatte die gleiche Fehlermeldung. Mein Code war fehlerfrei und funktionierte einwandfrei. Dann habe ich mich entschlossen, eine meiner Schaltflächen umzubenennen. Plötzlich erhalte ich einen Kompilierungsfehler, begleitet von der blauen, schnörkellosen Unterstreichung, die besagt, dass das Steuerelement im aktuellen Kontext nicht vorhanden ist.
Es stellte sich heraus, dass Visual Studio dumm war, da das Problem mit den Sicherungsdateien zusammenhängt, die ich mit meiner Klasse aspx.cs erstellt hatte. Ich habe diese gelöscht und die Fehler sind verschwunden.
quelle
Ich bin auf dasselbe Problem gestoßen. Anscheinend sollten Sie eine Klasse in der BLL nicht mit demselben Namen wie eine der .aspx / .aspx.cs-Dateien aufrufen. Ich dachte, sie würden nicht im gleichen Bereich liegen usw., aber es hat die internen Abläufe von Visual Studio zu sehr beeinträchtigt. Ich bin ein bisschen überrascht, dass es nichts gibt, das Sie davon abhält, dies zu tun, wenn es zu dieser Art von Fehler kommt. Löschen Sie einfach die Dateien .aspx / .aspx.cs und erstellen Sie Ihr Projekt neu. Dann bringen Sie sie unter einem anderen Namen zurück. Sie können Ihren Code kopieren / in einen anderen Editor einfügen, wenn Sie nicht alles erneut eingeben möchten.
quelle
In meinem Fall wurde das Webformular beim Erstellen als WebForm1.aspx und mit den entsprechenden Namen (WebForm1) bezeichnet. Brief, ich habe das in etwas anderes umbenannt. Ich habe an fast allen Stellen manuell umbenannt, aber an einer Stelle in der Designer-Datei wurde sie immer noch als "WebForm1" angezeigt.
Ich habe das auch geändert und diesen Fehler beseitigt.
quelle
1) Überprüfen Sie die CodeFile-Eigenschaft in <% @ Page CodeFile = "filename.aspx.cs"%> auf der Seite "filename.aspx". Ihr Code hinter dem Dateinamen und dieser Eigenschaftsname sollten identisch sein.
2) Möglicherweise fehlt runat = "server" im Code
quelle
In meinem Fall musste ich die 417-Fehler "Kontrollname nicht gefunden" durchsuchen, um einen tatsächlichen Fehler zu finden: Ich hatte eine DLL ersetzt, aber die Versionsnummer in der web.config nicht aktualisiert. Das wurde behoben und 3 Minuten später erfolgreich erstellt. Alle anderen Fehler hatten sich von selbst behoben.
quelle