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名前空間の指定も必要になるのですね。
これがわからずに半日くらい潰しました。一時は、分離コードなんてやめてしまえ!とか思いかけましたが、粘ってよかったです。これでスッキリコードが書けます。
コメント