2009-04-06 2 views
0

私は、ページ、Default.aspx、およびUserControl、HelloControl.ascxを持っています。次のようにページでは、私は動的にコントロールをインスタンス化:これは正常に動作し、ユーザーコントロールが応答に「コントロールからこんにちは」の書き込みいつ、どこでUserControlをコンパイルしますか

protected void Page_Load(object sender, EventArgs e) 
{ 
    HelloControl c = Page.LoadControl(typeof (HelloControl), null) as HelloControl; 
    c.Greet(); 
} 

。 Default.aspxに@Registerディレクティブがありませんが、クライアントのマシン上で同様の動的コントロール作成を試みると、 "TypeまたはNamespaceが存在しません"というエラーが発生します。

@Registerディレクティブが必要なMSからのフォーラムでも、私はフィードバックを得ていますが、明らかにそうではありません。 @Registerディレクティブがそれを参照していない場合、どのようにしてユーザコントロールがコンパイルされるかについての情報を誰かに教えてくれますか?

編集:私はLoadControlへの私の最初の呼び出しを失って、調査の別の方向を試みて、私はまだ問題を再現できません。次のコードは、@Registerディレクティブなしで、私の開発マシン上でも正常に動作します。

protected void Page_Load(object sender, EventArgs e) 
{ 
    HelloControl c = new HelloControl(); 
    Response.Write(c.Greet()); 
} 

答えて

0

制御するための完全なパスを使用します。

this.Controls.Add(Page.LoadControl("~/CustomControls/HelloControl.ascx"));

+0

なぜそれが違いを生むだろうか? – ProfK

関連する問題