コード ビハインドでユーザー コントロールを追加するには、2 つの方法があります。
- ユーザー コントロール コンストラクターを親ページに公開します。
- Page.LoadControl メソッドを使用します。
したがって、基本的には、同じタスクを実行する 2 つの異なる方法があります。特定の状況下で 1 つの方法が機能し、他の方法は機能しませんか?それらの機能の違いは何ですか? そして、いつどちらを優先するのですか?
コード ビハインドでユーザー コントロールを追加するには、2 つの方法があります。
したがって、基本的には、同じタスクを実行する 2 つの異なる方法があります。特定の状況下で 1 つの方法が機能し、他の方法は機能しませんか?それらの機能の違いは何ですか? そして、いつどちらを優先するのですか?
ここで答えを見つけました
Web カスタム コントロールと Web ユーザー コントロールの違いを理解する必要があります。
Web コントロール (DataGrid、ボタンなど) のような Web カスタム コントロールはクラスです。それらを作成するには、コンストラクターを呼び出すだけです: Dim b as Button = new Button()
Web ユーザー コントロールは、ASCX ページ (HTML を含む) とクラスによって定義されます。クラスはコントロールのコード ビハインドにすぎないため、そのコンストラクターを呼び出してもコントロールは作成されません。ここで LoadControl メソッドが必要です。ASCX ページの名前を渡すと、このページと CodeBehind クラスの両方が読み込まれます。
LoadControl
タイプが使用できない場合に、ユーザー コントロールをページに動的に追加するために主に使用されます。ほとんどのユーザー コントロールは、更新可能な Web サイト アプリケーションでは使用できません。また、型が使用できないため、動的に作成されたユーザー コントロールのプロパティを設定するのが難しいことにも注意してください。
MyControl c = new MyUserControl()
が推奨されますが、次のようなことを止めることはありません:
MyControl c = (MyControl)Page.LoadControl('path to ascx');
しかし、私はその必要性を見ていません。