Wenn erstreckt, um eine asp.net Web-Steuerung, bei welchem ​​Fall sollten zusätzliche Websteuerelemente injiziert werden?

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

  •  08-07-2019
  •  | 
  •  

Frage

Ich versuche, eine Verbundsteuerung oder Verwendung und ASCX zu vermeiden, indem eine bestehende Steuerung erstreckt. Allerdings habe ich Probleme mit dem Erhalten der Kontrollen an den geerbten Steuerelement hinzugefügt und halten ihren Ansichtszustand / Post-zurück Integrität. Jedes Mal, wenn ich die Kontrollen während hinzufügen vorrendern, die Kontrollen zeigen, aber die Post-zurück wirft eine Ansichtszustand Ausnahme. Ich versuchte, sie sowohl dort als auch während Loadviewstate (was natürlich eine lange-shot dumm) Zugabe. Init ist nicht verfügbar, von der Steuerung, die ich erstrecken.

  

Die Ausnahme ist,   Sys.WebForms.PageRequestManagerServerErrorException:   Fehlgeschlagen viewsstate zu laden. Die Kontrolle   Baum, in den Ansichtszustand wird   loaded müssen die Steuerbaum übereinstimmen   das wurde verwendet Ansichtszustand zu speichern während   die vorherige Anforderung. Zum Beispiel,   beim Hinzufügen steuert dynamisch die   Kontrollen während eines Post-back hinzugefügt muss   entsprechen den Typ und die Position des   Kontrollen während der anfänglichen hinzugefügt   Anfrage

War es hilfreich?

Lösung

Eigentlich sagt Microsoft sollten Sie die Create Methode.

Sie können die Basisklassenmethode aufrufen, bevor oder nachdem Sie die Steuerelemente hinzufügen, ich bin nicht sicher, ob es eine Konvention ist.

protected override void CreateChildControls(){
  Controls.Add(someControl);
  base.CreateChildControls();
}

Ich hoffe, das hilft!

Andere Tipps

Sie sollten sie in OnInit oder in Createchild hinzuzufügen. Wie auch immer, zu vermeiden Probleme mit Viewstate hat, lesen Sie dieser großen Artikel . Möglicherweise Probe „4. Initialisieren geordneten Steuerelemente programmatisch“ ist der Fall.

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