2017-06-13 7 views
0

私は、ASP.NETユーザーコントロールを使用して、アプリケーションの一部の機能をカプセル化しています。私は、コントロールのPage_LoadハンドラがホストページのPage_Loadハンドラの後に実行されるので、ホストページのPage_Loadからコントロールを初期化できないことに気付いています。ホストページでPage_LoadCompleteを使用しています。設計時にコントロールがページのHTMLに静的に追加されたときに正常に動作します。動的に読み込まれたASP.NETユーザーコントロールが初期化に失敗する

ただし、実行時にコントロールを動的にロードしようとすると、状況が正しく行われません。私は正常にコントロールをインスタンス化し、私のページ内のパネルに追加します。前のケースのようにPage_LoadCompleteまで初期化が延期されるようにコレクションに追加します。ただし、Page_LoadCompleteのコードがコントロールを初期化しようとすると、コントロールがまだロードされていないため、失敗します。具体的には、コントロールのPage_Loadが(ホストページのPage_Loadの直後に)トリガーされると、ローカルフィールドがまだ初期化されていないことがわかります。たとえば、ユーザーコントロールのサブコントロールをマッピングするフィールドは、まだ追加されている他のフィールドと同様にnullです。私が追加したフィールドは私によって初期化されるべきだと主張するかもしれませんが、サブコントロールをマップするフィールドはPage_Loadが実行される前に初期化されていなければなりません。

これは予期された動作ですか?もしそうなら、私はコントロールを動的にロードする際に適切に初期化するために何ができますか?どうもありがとう。

答えて

1

event diagram

PREINIT段階でコントロールを追加してみてくださいコントロールが初期化段階が存在するようにしてポストバックデータ

+0

の処理の前に利用できる私が試した、と問題は同じまま。私は、HTMLで静的に宣言されたコントロールを使用し、Page_LoadCompleteに初期化を延期することで問題を解決しました。 – CesarGon

関連する問題