Web サイトプロジェクトで、ユーザー コントロールへの参照をページまたはコントロールのマークアップに追加すると、次のようになります。
<%@ Reference Control="~/controls/myUserControl.ascx" %>
ASP
次に、自動生成された名前空間を使用して、分離コードからそのコントロールのインスタンスをプログラムで作成できます。
ASP.controls_myUserControl_ascx myControlInstance =
new ASP.controls_myUserControl_ascx();
ただし、Web アプリケーションプロジェクトでは、コンパイル エラーが発生します。MSDN に関するこのコメントは、Web アプリケーション プロジェクトでは機能しないことを示唆していますが、代替案は示唆していません。
次のように、ユーザー コントロールの背後に存在するクラスのインスタンスを作成できます。
MyWebApplication.controls.myUserControl myControlInstance
= new MyWebApplication.controls.myUserControl();
ただし、これには .ascx ファイルのマークアップ (またはサーバー側のコントロール) が含まれていないため、これは役に立ちません。
次のように、マークアップを含むコントロールをインスタンス化できます。
MyWebApplication.controls.myUserControl myControlInstance
= LoadControl("~/controls/myUserControl.ascx")
as MyWebApplication.controls.myUserControl;
これにより、すべてのプロパティにアクセスでき、問題なく動作するようです。しかし、厳密に型指定されたクラスを別のプロジェクト タイプで使用できる場合に、文字列パスからコントロールをロードするのは少し厄介なようです。
だから、私の質問は: Web アプリケーション プロジェクトでユーザー コントロールをプログラムで作成するより良い方法はありますか? それとも私は立ち往生していLoadControl
ますか?