I'm wor开发者_JAVA技巧king with referencing user controls on my ASPX page and I'm wondering what the difference is between these two page directives.
@Reference @Register
@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
%>
@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
精彩评论