Meistens verwende ich es, wenn ich auf eine Eigenschaft eines zusammengesetzten Steuerelements zugreife, das von einem untergeordneten Steuerelement abhängt. Aber ich habe es auch OnInit eines Controls hinzugefügt, damit ich sicherstellen konnte, dass ein verstecktes Feld korrekt hinzugefügt wurde. Vor einer Minute habe ich es in RenderControl aufgerufen, weil ich ein Problem hatte, das einen Kalender-Extender gerendert hat, und es hat es repariert. Ich fange an, ein wenig verwirrt zu werden, wenn ich brauche und wenn ich EnsureChildControls nicht aufrufen muss und wann ich es anrufen sollte. Alle Hinweise sind willkommen. Vielen Dank!Was ist die ordnungsgemäße Verwendung von EnsureChildControls()?
Antwort
EnsureChildControls löst CreateChildControl aus, wenn es nicht bereits zuvor ausgelöst wurde. Dies muss nur einmal im Seitenlebenszyklus durchgeführt werden. Ich nenne es in OnInit/Pageinit und nirgendwo sonst bedingungslos. Dieser Ort hat den Vorteil, dass die Steuerelemente erstellt werden, bevor ASP.NET den ViewState lädt. Wenn Sie ViewState oder ControlState verwenden, müssen Sie die untergeordneten Steuerelemente frühzeitig erstellen.
Will OnInit Aufruf es in den Eigenschaften zu entfernen, wenn die Eigenschaft greift auf etwas wie TextBox1.text? – Mike
Im Allgemeinen sage ich "Ja", aber im Detail hängt es von Ihrer Verwendung ab. Wenn Sie EnsureChildControls in OnInit aufrufen, können Sie sicher auf die Steuerelemente zugreifen (über Eigenschaften oder auf andere Weise), ohne sie in allen folgenden Phasen des Seitenlebenszyklus erneut aufzurufen (Load, Postback Events, Render, ...). Wenn Sie ViewState verwenden, sollte dies der Fall sein die einzige Verwendung. –
Die Methode EnsureChildControls stellt sicher, dass untergeordnete Steuerelemente erstellt werden, bevor auf sie zugegriffen wird.
Immer wenn Sie beispielsweise Composite-Steuerelemente schreiben, möchten Sie Ihre Steuerelemente in den CreateChildControls-Ereignissen erstellen und dann EnsureChildControls aufrufen, bevor Sie darauf zugreifen, um sicherzustellen, dass alle Steuerelemente erstellt wurden, so dass Sie keine NULL-Ausnahme erhalten.
Diese Frage macht mich glücklich Ich lernte MVC :) – fearofawhackplanet