Question

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

Was it helpful?

Solution

@Register is the more commonly used directive. You use this when you want to use a user control in your aspx or ascx page declaratively. @Register associates the control with a specific prefix and you can then use it in your markup.

@Reference only tells ASP.NET to compile the other control when your aspx or ascx page is compiled. That makes sure it is available at run-time and can be added to your control hierarchy programmatically. This is less common since dynamically changing user controls at runtime is not comon.

Here's a good blog post about it.

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

OTHER TIPS

@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
%>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top