3

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ますか?

4

1 に答える 1

0

LoadControl は、ユーザー コントロールをプログラムで作成する方法です。

于 2012-04-13T13:57:54.903 に答える