を維持したい場合は Page_Init の後に動的コントロールを追加するべきではないため、ばかげたタイトルのように思えるかもしれViewState
ませんが、問題を説明するより良い方法は思いつきませんでした。
次のようなクラスがあります。
public class WebCustomForm : WebControl, IScriptControl
{
internal CustomRender Content
{
get
{
object content = this.Page.Session[this.SESSION_CONTENT_TRACKER];
return content as CustomRender;
}
private set
{
this.Page.Session[this.SESSION_CONTENT_TRACKER] = value;
}
}
}
CustomRender
は、執筆中の CustomForms モジュールを自己完結させるために使用する ITemplate を実装する抽象クラスです。
を保持するPage_Init
ページでWebCustomForm
、関連する ID を渡してコントロールを初期化します。次に、オーバーライドされたOnInit
メソッドで、現在アクティブなコントロールでWebCustomForm
Instantiate を呼び出します。CustomRender
if (this.Content != null)
{
this.Content.InstantiateIn(this);
}
問題は、私のコントロールが のコントロールCustomRender
を変更する機能を必要とすることです。しかし、CustomRender で発生するイベントが発生すると、明らかに Page_Init イベントは既に発生しています。それで、私の質問は、その中に動的に追加されたコントロールからコンテンツを変更するにはどうすればよいですか?CustomRender
WebCustomForm
WebCustomForm
私の見方では、次の 3 つのオプションがあります。
CustomRender
コントロールを独自のスタンドアロン コントロールに分離し、基本的にコントロールごとに aspx ページを持ち、ページ上でイベントを自分で処理します (ただし、ページにドロップして忘れるコントロールを作成することを望んでいました)。- イベントを使用せず、現在のページをリクエストし続けますが、異なるリクエスト パラメータを使用します
- 誰かが私に与えることができるより良い提案で、私は製図板に戻ります.