3

私はダイナミックコントロールに関する2つの質問に積極的に取り組んでいます。答えはほとんどの場合、ポストバックでの再作成に関するものです。質問は、これの正しい場所はどこですか。

ここに2つのSOの質問があります

質問1

質問2

CreateChildControlsをオーバーライドすることで、常に動的コントロールの作成を行います

リフレクターの多くのコントロール、主にtelerikコントロールを調べて、これは正しいといつも思っていましたが、多くの人がInitで作成する必要があると言っています。

CreateChildControlsを引き続き使用する必要がありますか、それともInitが正しい方法である必要があります...なぜこれがこのような混乱の領域に見えるのですか。

4

2 に答える 2

3

実は、どちらも同じことを成し遂げています。組織のコントロールを開発している場合、それをinitに入れることは問題なく機能します(「技術的にはあるべき場所」であっても機能しますが、MSはそれが期待される方法を作成しました。

あなたがTelerikのようで、他の誰かが使用するコントロールを作成しているなら、私は間違いなくそれをCreateChildControlsクラスに入れます。なんで?なぜなら、それは人々が期待していることであり、MSがコントロール開発者に望んでいることだからです。この状況で気にする必要があるのは(特に、開発するコントロールが封印されていない場合)、誰かがさまざまなメソッドをオーバーライドできることです。これまで見てきたように、多くの人がinitクラスをオーバーライドしてコードを機能させることができます。彼らが望む方法。基本メソッドの呼び出しを忘れてコードが文書化されていないために、コードが不思議に機能しない状況は常に避けたいと考えています。あなたがそれを入れるときCreateChildControlsあなたが他の開発者に言っている方法は次のとおりです:「私はおそらくここであなたが注目したいコントロールを作成することで何かをしている」。オーバーライドすると、常にそのメソッドのベースを分類しようと思います。

それを入れることについてのもう一つの素晴らしいことCreateChildControlsは、多くの人々がおそらくそれについて知らないということです(そしてそうする人々はそれが何のために使われるかを知っています)。したがって、彼らがあなたのコントロールとサルから継承しInit、baseメソッドを呼び出すのを忘れたInit場合でも、コードは「魔法のように」機能し、何が悪かったのかを理解するのに大騒ぎする必要はありません。

于 2010-12-21T14:50:16.230 に答える
0

このページをブックマークして!

ASP.NETページのライフサイクルの概要 http://msdn.microsoft.com/en-us/library/ms178472.aspx

于 2010-12-21T14:43:38.767 に答える