2012-04-26 10 views
6

Ho un controllo utente che ho scritto e aggiunto a una pagina ASP.NET e funziona perfettamente. Tuttavia, sto provando a fare riferimento a una proprietà nel controllo personalizzato dal codice sottostante, su Page_Load, ma non posso, perché la variabile, che è accessibile, per l'istanza è nullo.L'istanza di controllo utente ASP.NET è nullo quando si fa riferimento a Page_Load sul codice della pagina dietro

È normale per i controlli utente e Page_Load? E se sì, come posso fare un riferimento all'istanza del controllo per accedere alle sue proprietà pubbliche? Questo è qualcosa che devo fare prima di renderizzare la pagina, al fine di inizializzare alcune variabili.

+0

Dovresti poter fare riferimento al controllo utente nel metodo Page_Load. Ti preghiamo di mostrare il tuo codice e il tuo codice. Nell'esempio di markup, includi i tag <% @ Register%>. – Mark

risposta

0

È possibile accedere al controllo utente dall'evento Page_PreRender.

È possibile trovare ulteriore documentazione sullo page life cycle in asp.net here.

+0

Grazie, sembrava fare il trucco! –

15

Ho avuto lo stesso problema e ho scoperto che stavo registrando il mio controllo personalizzato in modo errato.

Definizione corretto:

<%@ Register Src="PeriodControl.ascx" TagName="PeriodControl" TagPrefix="ucs" %> 

Definizione errata:

<%@ Register TagPrefix="ucs" Namespace="MyWebsite" Assembly="MyWebsite" %> 

L'unica differenza era fare riferimento al file ascx direttamente invece che il controllo nell'assieme. Vai a capire!?

+2

Cosa si fa se il controllo utente è effettivamente in un assembly (l'ascx si trova nella DLL e non nel sito). In genere ho utilizzato un progetto di distribuzione Web per compilare tutti i miei controlli utente comunemente utilizzati in una DLL. VS2012 non supporta questo tipo di progetto, ma è possibile compilare un sito in un assieme e VS lo leggerà .. ma non riesco a capire come registrare correttamente, quindi i controlli sui controlli utente non sono nulli. –

+0

Non ne sono sicuro. Se fa riferimento a una dll, forse verrà visualizzata nella tua casella degli strumenti e potrai trascinarla sulla tua pagina. Allora VS creerà il tag di registro per te :) Questo è tutto quello che riesco a pensare. Spero che aiuti ... –

+0

Ho sofferto per 2 ore e finalmente ho trovato la soluzione, ha funzionato come un fascino. – gangt

Problemi correlati