標準パラダイムを使用して、ポストバック中に初期化をやり直すことを回避するユーザー コントロールがありますif(!IsPostBack){//initialize myself}
(そのため、ViewState の使用量を増やすために DB ヒットを少なくします)。このアプローチはほとんどの場合うまく機能しますが、ポストバック中に、このコントロールを「遅く」コントロール階層に追加したい場所が 1 つあります。
もちろん、これにより初期化ロジックが失敗し、コントロールが初期化されていない状態でレンダリングされます。
!IsPostBack
カットしていないので、初期化する必要があるかどうかを判断するためにどのガードを使用する必要がありますか? 中にフラグを設定できましLoadViewState
たが、それは少しハックなようです。私が見つけたいのは、コントロールが最初にコントロール階層に追加されたときにのみ発生する条件であり、それをキーにします。そのような条件は存在しますか?
[編集] 含まれているページのサンプル疑似コードは次のとおりです。
protected void Page_Prerender(object sender, EventArgs e)
{
Controls.Add(LoadControl("some_control.ascx"));
}
some_control
遅れて追加されたことを知る方法はありますか?