ユーザーコントロールを動的に生成する

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

ASP.NETでユーザーコントロールを動的に生成する際は、普通のwIndowsFormsApplicationのようにはいきません。

ユーザーコントロールの使用を宣言する

まずはユーザーコントロールを使用することを上の方に宣言します。場所は<% Page …のすぐ下あたり

<%@ Register TagPrefix="UC" TagName="CustomUserControl" Src="usercontrol.ascx" %>

プロパティは合計3つ

  • TagPrefix …タグの接頭辞、何でもいいけど短い方がいいです。
  • TagName …タグの名前
  • Src …ユーザーコントロールのファイルパス(ascx)を指定します。(できれば絶対パスで)

これでユーザーコントロールを使用する準備ができました。

コード

実際に動的生成するコードです。

var usercontrol = Page.LoadControl("usercontrol.ascx");

newでコントロールを初期化することもできるのですが、初期化する段階で結構面倒なことをしているらしいので、pAge.LoadControlwをつかって初期化してやります。
もし、ユーザーコントロールのプロパティとか変更したいなら、そのユーザーコントロールのクラスに変換してあげると変更することができます。
多分、ASP.NETでユーザーコントロールを作成したばっかりのクラスは長ったらしい上にわかりづらいものだと思います。扱いやすいように変更しておくことをお勧めします。

まとめ

<% Register … %>でユーザーコントロールを宣言する
Page.LoadControlでコントロールを初期化する