ASPXページでユーザーコントロールを参照しているところですが、これら2つのページディレクティブの違いは何でしょうか。
2 に答える
@Register主に、ページ内でコントロールを宣言的に使用するためにタグプレフィックスを登録するために使用されます。
<%@ Register tagprefix="my" namespace="MyNamespace" %>
<my:CustomControl runat=server />
@Reference主に、ページまたはコントロールのメンバーをプログラムで参照するために(ファイル名または仮想パスによって)ページまたはユーザーコントロールを参照するために使用されます。
<%@ Reference Control="MyControl.ascx" %>
<% MyControl ctrl = (MyControl) Page.LoadControl("MyControl.ascx");
ctrl.CustomProperty = "..."; //REFERENCE directive is needed to access property
%>
@Registerより一般的に使用されるディレクティブです。これは、aspxまたはascxページで宣言的にユーザーコントロールを使用する場合に使用します。 @Registerコントロールを特定のプレフィックスに関連付けて、マークアップで使用できるようにします。
@Referenceaspxまたはascxページがコンパイルされるときに、ASP.NETに他のコントロールをコンパイルするように指示するだけです。これにより、実行時に使用可能になり、プログラムでコントロール階層に追加できるようになります。実行時にユーザーコントロールを動的に変更することは一般的ではないため、これはあまり一般的ではありません。
これはそれについての良いブログ投稿です。
http://weblogs.asp.net/johnkatsiotis/archive/2008/08/13/the-reference-directive.aspx