2009-04-16 4 views
2

ユーザーがWebコントロールにコントロールを追加したときに、その前後にボタンを置くことができ、独自のラッパーに配置できるように、WebControlのコントロールのコントロールコレクションをオーバーライドしようとしています。 。WebControlのコントロールコレクションをオーバーライドする

protected override ControlCollection Controls 
{ 
    EnsureChildControls(); 
    return this._panel.Controls; 
} 

しかし、これを行うと、何らかの理由で子コントロールのビューステートが保持されません。何か案は?

ありがとうございます!

答えて

1

ViewStateは、コントロールツリーと並行して構築されたオブジェクトグラフであるため、これらの種類の変更は、あなたが説明している副作用を持つ傾向があります。あなたが本質的にControlsオブジェクトをハイジャックしていて、別の意味を与えていると主張できます。これは実際にオーバーライドする意図ではありません。むしろ、オーバーライドは、同じ意味または意図を達成するための異なるメカニズムを提供するためのものです。 "私の子供の子供のコントロール"は、"私の子供のコントロール"と同じではありません。

あなたが説明していることを達成するためのより良い方法があります。コントロールにプロパティを明示的に公開することができます。このプロパティは、ユーザーがコントロールを追加する「エリア」です。この目的が、1つのカスタマイズ可能な領域を持つ複雑なコントロールであることが意図されている場合は、その領域をそのように公開します。

関連する問題