【プログラミング】【ASP.NET】分離コードからユーザコントロールのインスタンスを作成する

ASP.NETのプログラミングメモです。

ASP.NETでは、マークアップ(.aspx)とプログラムコード(.aspx.cs)を別々のファイルで持っていますが(分離コード)、ユーザコントロール(.ascx)のインスタンスをコード中から生成する方法がわからなかったので、調べてみました。

まず、マークアップファイル(.aspx)中で、@Referenceディレクティブを使ってユーザコントロールへの参照を可能にします。

<%@ Reference Control="UserControl.ascx" %>

そして、プログラムコード側では、LoadControlメソッドを使ってインスタンスを作成します。

ASP.UserControl control = (ASP.UserControl)Page.LoadControl("UserControl.ascx");

ここで、ユーザコントロールは、ASP名前空間になるのがミソなんですね。分離コードでない、同一ファイルにマークアップとコードを入れていたときには@Registerディレクティブを書くだけでUserControlクラスを参照できたのですが、分離コードではASP名前空間の指定も必要になるのですね。

これがわからずに半日くらい潰しました。一時は、分離コードなんてやめてしまえ!とか思いかけましたが、粘ってよかったです。これでスッキリコードが書けます。

コメント