Wie greifen Sie Control.ViewState mit einer dynamisch hinzugefügt Steuerungsunterklasse?

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

  •  02-07-2019
  •  | 
  •  

Frage

Wir haben eine Steuerung geschaffen, die Daten über die Viewstate-Eigenschaft der Control-Klasse bestehen bleiben muss. Unsere Klasse Subklassen streng kontrolliert den Zugriff auf die Viewstate-Eigenschaft zu erhalten (es auf dem Page-Objekt geschützt ist). Wir fügen das Steuerelement Page.Controls in OnInit, und dann versuchen, die Viewstate-Eigenschaft in OnPreLoad einzustellen.

Wenn wir den Viewstate der Seite entschlüsseln und untersuchen, haben unsere Werte wurden nicht ausgeschrieben und sind somit nicht für einen späteren Abruf.

Wer weiß, wie wir unsere Kontrolle geraten können im Viewstate-Prozess teilnehmen?

War es hilfreich?

Lösung

Das Problem ist das Hinzufügen der Steuerung an der Seite direkt. Leider ist dies zu hoch Hierarchie der Kontrollen in der Formularviewstate Handhabung teilzunehmen. Wenn Sie die Kontrolle auf die tatsächlichen ASPNet Formular Kontrollen Sammlung irgendwo dann wird es erfolgreich teilnehmen LoadViewStateRecursive und SaveViewStateRecursive.

Andere Tipps

Versuchen Sie, Ihre Kontrolle in OnInit erstellen, fügen Sie es dann zu den Page.Controls während OnLoad.

Viewstate nicht geladen wird, bis nach OnInit, aber vor dem OnLoad.

Hier ist eine grobe Skizze der Seite Life-Cycle ( GregMac ) dies auf eine frühere Frage in einer Antwort gepostet von Mine.

  • Initialisieren
  • Loadviewstate
  • Laden Postback Daten
  • Anrufsteuerung laden Ereignisse
  • Anruf Load-Ereignis
  • Anrufsteuerungsereignisse
  • Steuer PreRender
  • PreRender
  • Save
  • Unload

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