ASP.NET @Register vs. @Reference

asp.netpage-directives

I'm working with referencing user controls on my ASPX page and I'm wondering what the difference is between these two page directives.

@Reference
@Register

Best Answer

@Register is primarily used for registering tag prefixes to declaratively use controls within a page.

<%@ Register tagprefix="my" namespace="MyNamespace" %>

<my:CustomControl runat=server />

@Reference is primarily used to refer to a page or user control (by file name or virtual path) to programatically refer to members of the page or control.

<%@ Reference Control="MyControl.ascx" %>

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