Come si accede a Control.ViewState con una sottoclasse Control aggiunta in modo dinamico?
Domanda
Abbiamo creato un controllo che deve conservare i dati tramite la proprietà ViewState della classe Control. Le nostre sottoclassi di classe controllano rigorosamente per ottenere l'accesso alla proprietà ViewState (è protetta sull'oggetto Page). Stiamo aggiungendo il controllo a Page.Controls in OnInit e quindi tentiamo di impostare la proprietà ViewState in OnPreLoad.
Quando decodifichiamo ed esaminiamo il ViewState della pagina, i nostri valori non sono stati scritti e quindi non sono disponibili per il successivo recupero.
Qualcuno sa come possiamo ottenere il nostro controllo per partecipare al processo ViewState?
Soluzione
Il problema è l'aggiunta diretta del controllo alla Pagina. Purtroppo questo è troppo in alto nella gerarchia dei controlli per partecipare alla gestione dei moduli ViewState. Se si aggiunge il controllo all'attuale raccolta Controlli del modulo ASPNet da qualche parte, parteciperà correttamente a LoadViewStateRecursive e SaveViewStateRecursive.
Altri suggerimenti
Prova a creare il controllo in OnInit, quindi aggiungilo a Page.Controls durante OnLoad.
ViewState non viene caricato fino a dopo OnInit, ma prima di OnLoad.
Ecco uno schema generale del ciclo di vita della pagina ( GregMac ) pubblicato in una risposta a una domanda precedente di mio.