2010-12-21 7 views
3

Ich habe zwei Fragen in Bezug auf dynamische Kontrollen nur aktiv, ist die Antwort fast immer um neu zu erstellen, auf Postbacks, die Frage ist wo der richtige Ort für diesenin Ordnung, genau dort, wo soll ich dynamische Steuerelemente erstellen

Hier sind die beiden SO Fragen

question one

question 2

Wir haben unsere dynamische Steuerung Schaffung von o immer tun verriding CreateChildControls

Nachdem ich viele Kontrollen im Reflektor durchgesehen habe, hauptsächlich Telerik-Steuerungen, dachte ich immer, das sei richtig, aber so viele Leute sagen, sie sollten in Init erstellt werden.

Sollte ich weiterhin mit Create oder die richtige Art und Weise Init ... Warum dies so scheint ein Bereich, der Verwirrung ..

Antwort

3

In Wahrheit, sie beide erreichen die gleiche Sache. Wenn Sie Steuerelemente für Ihre Organisation entwickeln, dann wird es gut funktionieren (da es funktioniert, obwohl es "technisch der Ort ist, an dem es sein sollte"), aber MS hat eine Methode erstellt, wo sie es erwarten .

Wenn Sie wie ein Telerik sind, wo Sie Kontrollen erstellen, die jemand anderes verwenden wird, dann würde ich es definitiv in die Klasse CreateChildControls setzen.Weil, denn das ist, was Menschen erwarten, und das ist, was MS Kontrolle will Entwickler zu tun.Was Sie in dieser Situation beschäftigen müssen (vor allem, wenn die Steuerelemente, die Sie entwickeln, nicht versiegelt sind), ist, dass jemand verschiedene Methoden überschreiben kann, und wie Sie gesehen haben viele Menschen die init Klasse überschreiben Machen Sie ihren Code so, wie sie es wollen, Sie wollen immer eine Situation vermeiden, in der Ihr Code auf geheimnisvolle Weise nicht funktioniert habe vergessen, eine Basismethode aufzurufen, und sie ist nicht dokumentiert. Wenn Sie es in die CreateChildControls Methode schreiben, was Sie anderen Entwicklern sagen, ist: "Ich mache wahrscheinlich etwas mit dem Erstellen von Steuerelementen hier, die Sie zur Kenntnis nehmen möchten." Ich würde immer daran denken, die Basis dieser Methode zu klassifizieren, wenn ich sie außer Kraft setze.

Die andere großartige Sache über das Setzen in CreateChildControls ist, dass viele Leute wahrscheinlich nicht darüber wissen (und die Leute, die tun, wissen, wofür es verwendet wird). Also, wenn sie von Ihrer Kontrolle und Affe mit der Init erben und vergessen, die Basis Init Methode zu nennen, funktioniert Ihr Code immer noch "magisch", und sie müssen sich nicht damit beschäftigen, herauszufinden, was schief gelaufen ist.

+1

Beachten Sie auch, dass EnsureChildControls Ihren Steueradapter aufrufen wird, wenn Sie einen registriert haben, dies kann oder darf nicht gewünscht werden .. –

+0

Guter Punkt Richard. Danke, dass du das hinzugefügt hast. – kemiller2002