Frage

Ich habe eine Website in asp.net, die eine Masterseite verwendet.Auf dieser Masterseite habe ich ein Multiview-Steuerelement mit einer Ansicht, die den gesamten Inhalt für die Inhaltsseiten enthält, und einer Ansicht, die einige lokale Inhalte für die Masterseite enthält, wo ich Fehlermeldungen von allen Inhaltsseiten zeige.

In dieser Fehleransicht habe ich ein asp.net Label-Steuerelement, das die Fehlermeldungen anzeigt.Normalerweise funktioniert die Bezeichnung einwandfrei, aber in einigen wenigen Fällen ist die Bezeichnung null, was zu einer NullReferenceException führt.Jetzt habe ich diesen Fall behandelt, indem ich vor der Verwendung überprüft habe, ob die Bezeichnung null ist, aber meine Frage lautet immer noch:

Warum ist dieses Label null?Welche Umstände können dazu führen?

BEARBEITEN: Auf der Masterseite habe ich eine Methode namens SetErrorText, die eine Zeichenfolge akzeptiert und die Beschriftung festlegt.Ich rufe diese Methode über die Page_Load-Methode der Inhaltsseiten auf, und das funktioniert im Allgemeinen einwandfrei.In allen bis auf zwei Fällen (die ich bisher entdeckt habe) wird die Bezeichnung initialisiert, und nichts unterscheidet diese beiden Fälle von allen, die funktionieren.

Außerdem werden alle anderen Steuerelemente auf der Masterseite initialisiert, beispielsweise das Ansichtssteuerelement, das die Beschriftung enthält.

Wenn der Page_Load einer Inhaltsseite herumrollt, sollte die Masterseite gefüllt sein.

War es hilfreich?

Lösung

Es scheint, dass das Problem in der Schlamperei lag.Jemand hatte vergessen, die automatisch generierten Inhaltssteuerelemente zu löschen, die Visual Studio auf allen Inhaltsseiten einfügt, bei denen die Masterseite über ein ContentPlaceHolder-Steuerelement verfügt.

Wenn eine Inhaltsseite über ein Content-Steuerelement verfügt, sind anscheinend alle Steuerelemente, die im ContentPlaceHolder-Steuerelement auf der Masterseite platziert werden, null.

Andere Tipps

Mit welcher Methode auf der Masterseite greifen Sie auf das Etikett zu?Abhängig von der Phase des Seitenlebenszyklus wurde das Label-Steuerelement möglicherweise noch nicht geladen

Könnten Sie darauf zugreifen, bevor es erstellt wird?Überprüfen Sie den Seitenlebenszyklus: http://msdn.microsoft.com/en-us/library/ms178472.aspx

Ich hatte einen sehr ähnlichen Fehler.In meinem Fall wurde es durch eine seltsame Sache des .NET-Compilers im Zusammenhang mit der Control-Designer-Datei verursacht.Auch wenn in der Designerdatei die Steuerelemente korrekt definiert sind, löschen Sie sie, generieren Sie sie neu und erstellen Sie sie neu (stellen Sie sicher, dass Sie sie neu erstellen, nicht nur „erstellen“).Sehen Sie sich hier die Top-Antwort an, um zu erfahren, wie Sie die Designerdatei neu generieren:

Wie erzwingen Sie, dass Visual Studio die .designer-Dateien für ASPX/ASCX-Dateien neu generiert?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top