asp.net page-directives

ASP.NET @Register vs. @Reference



page-directives (2)

Estoy trabajando con los controles de usuario de referencia en mi página ASPX y me pregunto cuál es la diferencia entre estas dos directivas de página.

@Reference @Register


@Register es la directiva más utilizada. Usted usa esto cuando quiere usar un control de usuario en su página aspx o ascx de forma declarativa. @Register asocia el control con un prefijo específico y luego puede usarlo en su marca.

@Reference solo le dice a ASP.NET que compile el otro control cuando se compila su página aspx o ascx. Eso asegura que esté disponible en tiempo de ejecución y que se pueda agregar a la jerarquía de control mediante programación. Esto es menos común ya que los controles de usuario que cambian dinámicamente en tiempo de ejecución no son comunes.

Aquí hay una buena entrada de blog al respecto.

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


@Register se usa principalmente para registrar prefijos de etiquetas para usar de forma declarativa controles dentro de una página.

<%@ Register tagprefix="my" namespace="MyNamespace" %> <my:CustomControl runat=server />

@Reference se usa principalmente para referirse a una página o control de usuario (por nombre de archivo o ruta virtual) para referirse programáticamente a miembros de la página o control.

<%@ Reference Control="MyControl.ascx" %> <% MyControl ctrl = (MyControl) Page.LoadControl("MyControl.ascx"); ctrl.CustomProperty = "..."; //REFERENCE directive is needed to access property %>