我正在引用我的 ASPX 页面上的用户控件,我想知道这两个页面指令之间有什么区别。
21971 次
2 回答
23
@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
%>
于 2011-01-30T03:44:31.037 回答
19
@Register是更常用的指令。当您想以声明方式在您的 aspx 或 ascx 页面中使用用户控件时,您可以使用它。 @Register将控件与特定前缀相关联,然后您可以在标记中使用它。
@Reference仅在编译您的 aspx 或 ascx 页面时告诉 ASP.NET 编译其他控件。这确保它在运行时可用,并且可以通过编程方式添加到您的控制层次结构中。这不太常见,因为在运行时动态更改用户控件并不常见。
这是一篇关于它的好博客文章。
http://weblogs.asp.net/johnkatsiotis/archive/2008/08/13/the-reference-directive.aspx
于 2011-01-30T03:37:59.347 回答