web-dev-qa-db-ja.com

ASP.NET@Registerと@Reference

ASPXページでユーザーコントロールを参照しているところですが、これら2つのページディレクティブの違いは何でしょうか。

@ Reference@ Register

29
contactmatt

@Registerはより一般的に使用されるディレクティブです。これは、aspxまたはascxページでユーザーコントロールを宣言的に使用する場合に使用します。 @Registerコントロールを特定のプレフィックスに関連付けて、マークアップで使用できるようにします。

@Referenceは、aspxまたはascxページがコンパイルされるときに他のコントロールをコンパイルするようにASP.NETに指示するだけです。これにより、実行時に使用可能になり、プログラムでコントロール階層に追加できるようになります。実行時にユーザーコントロールを動的に変更することは一般的ではないため、これはあまり一般的ではありません。

これはそれについての良いブログ投稿です。

http://weblogs.asp.net/johnkatsiotis/archive/2008/08/13/the-reference-directive.aspx

18
Samuel Neff

@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
%>
21
Mark Cidade