Come si accede a Control.ViewState con una sottoclasse Control aggiunta in modo dinamico?

StackOverflow https://stackoverflow.com/questions/130705

  •  02-07-2019
  •  | 
  •  

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?

È stato utile?

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.

  • Inizializzare
  • LoadViewState
  • Carica dati postback
  • Controllo chiamate Carica eventi
  • Evento caricamento chiamata
  • Eventi di controllo delle chiamate
  • Control PreRender
  • PreRender
  • SaveViewState
  • Scarica

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