Domanda

Ho un sito Web in asp.net che utilizza una pagina master.In questa pagina master ho un controllo multivista con una vista che ha tutto il contenuto per le pagine di contenuto e una vista che ha parte del contenuto locale nella pagina master in cui mostro i messaggi di errore da tutte le pagine di contenuto.

In questa visualizzazione degli errori ho un controllo Label asp.net che visualizza i messaggi di errore.Di solito l'etichetta funziona bene, ma in alcuni casi l'etichetta è nulla, il che rende una NullReferenceException.Ora ho gestito questo caso controllando se l'etichetta è nulla prima di usarla, ma la mia domanda è ancora:

Perché questa etichetta è nulla?Quali sono le circostanze che possono generare ciò?

MODIFICARE: Nella pagina master ho un metodo chiamato SetErrorText che prende una stringa e imposta l'etichetta.Sto chiamando questo metodo dal metodo Page_Load delle pagine di contenuto e generalmente funziona correttamente.In tutti i casi tranne due (che ho scoperto finora) l'etichetta è inizializzata e nulla separa questi due casi da tutti quelli che funzionano.

Inoltre, tutti gli altri controlli nella pagina master vengono inizializzati, come il controllo View che ospita l'etichetta.

Quando il Page_Load di una pagina di contenuto scorre, la pagina master dovrebbe essere popolata.

È stato utile?

Soluzione

Sembra che il problema fosse la trascuratezza.Qualcuno si era dimenticato di eliminare i controlli contenuto generati automaticamente che Visual Studio inserisce in tutte le pagine di contenuto in cui la pagina master ha un controllo ContentPlaceHolder.

Se una pagina di contenuto ha un controllo Contenuto, tutti i controlli inseriti nel controllo ContentPlaceHolder sulla pagina master saranno nulli, a quanto pare.

Altri suggerimenti

Da quale metodo nella pagina master accedi all'etichetta?A seconda della fase del ciclo di vita della pagina, il controllo etichetta potrebbe non essere stato ancora caricato

Potresti accedervi prima che venga creato?Controlla il ciclo di vita della pagina: http://msdn.microsoft.com/en-us/library/ms178472.aspx

Ho avuto un errore molto simile.Nel mio caso è stato causato dalla stranezza del compilatore .NET relativa al file di progettazione del controllo.Anche se il file di progettazione ha i controlli definiti correttamente, eliminalo, rigeneralo e ricostruisci (assicurati di ricostruire, non semplicemente di "costruire").Vedi la risposta principale qui per come rigenerare il file di progettazione:

Come si forza Visual Studio a rigenerare i file .designer per i file aspx/ascx?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top