ASP.NET @Register vs. @Reference

时间:2011-01-30 03:32:39

标签: asp.net page-directives

我正在我的ASPX页面上引用用户控件,我想知道这两个页面指令之间的区别。

@Reference @Register

2 个答案:

答案 0 :(得分:20)

@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
%>

答案 1 :(得分:17)

@Register是更常用的指令。如果要以声明方式在aspx或ascx页面中使用用户控件,请使用此方法。 @Register将控件与特定前缀相关联,然后您可以在标记中使用它。

@Reference仅告诉ASP.NET在编译aspx或ascx页面时编译其他控件。这可确保它在运行时可用,并可以编程方式添加到控件层次结构中。这不常见,因为在运行时动态更改用户控件不是comon。

这是一篇关于它的好文章。

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