Я работаю с ссылкой на пользовательские элементы управления на моей странице ASPX, и мне интересно, какая разница между этими двумя директивами страниц.
ASP.NET @Register vs. @Reference
Ответ 1
@Register
является наиболее часто используемой директивой. Вы используете это, когда хотите использовать пользовательский элемент управления на странице aspx или ascx декларативно. @Register
связывает элемент управления с определенным префиксом, и вы можете использовать его в своей разметке.
@Reference
указывает только ASP.NET для компиляции другого элемента управления, когда скомпилирована ваша страница aspx или ascx. Это гарантирует, что он доступен во время выполнения и может быть добавлен в вашу управляющую иерархию программно. Это реже, поскольку динамически изменяющиеся пользовательские элементы управления во время выполнения не являются comon.
Вот хорошее сообщение в блоге об этом.
http://weblogs.asp.net/johnkatsiotis/archive/2008/08/13/the-reference-directive.aspx
Ответ 2
@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
%>