Поделиться через


Элемент управления Delegate (Control Templatization)

Дата последнего изменения: 1 октября 2009 г.

Применимо к: SharePoint Foundation 2010

Microsoft SharePoint Foundation реализует простой механизм декларирования элементов управления-кандидатов, предоставляющих конкретную функциональность, и выбора единственного поставщика функциональности. Посредством компонента можно идентифицировать элементы управления и шаблоны элементов управления, выступающие кандидатами при выборе конкретной функциональности.

Элементы управления идентифицируются на основе предоставляемой ими функциональности. Через элементы компонента можно зарегистрировать элементы управления с различной функциональностью. При этом указывается, какой вид элемента управления использовать, порядковый номер, а также либо URL-адрес шаблона элемента управления, либо имя сборки, как показано в следующих примерах:

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
  <Control 
    Id="SmallSearchInputBox" 
    Sequence="100" 
    Url="/templates/mysearchcontrol.ascx"/>
</Elements>

Следующий элемент управления заменит предыдущий, потому что для него указан меньший порядковый номер:

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
  <Control 
    Id="SmallSearchInputBox" 
    Sequence="50" 
    ControlClass="MySearchControl" 
    ControlAssembly="MyAssembly"/>
</Elements>

Делегат DelegateControl внедряется на страницы SharePoint Foundation и действует на основе вышеуказанных сведений:

<SharePoint:DelegateControl ControlId="SmallSearchInputBox"/>

Во время выполнения этот элемент управления принимает группу элементов управления, декларированных на уровнях фермы серверов, веб-приложения, семейства сайтов и веб-сайтов. Элемент управления с меньшим порядковым номером добавляется в дерево элементов управления через делегат DelegateControl. При наличии нескольких элементов управления выбор конкретного из них будет произвольным.

Порядковый номер делегата DelegateControl можно использовать для того, чтобы интегрировать в SharePoint Foundation элемент управления поиском в портале. Элемент управления поиском по умолчанию имеет порядковый номер 100, а поиск в портале мог бы быть активизирован на уровне семейства сайтов, к примеру, через порядковый номер 50. В этом случае SharePoint Foundation заменяет элемент управления поиском по умолчанию на элемент управления поиском в портале во всех местах, где он используется.

Например, в следующем примере показан элемент управления-делегат SmallSearchInputBox:

<SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBox"/>

Этот элемент управления может создать экземпляр пользовательского элемента управления-кандидата:

<MySearch:SuperSearchControl/>

Родительский элемент управления-делегат устанавливает свойства пользовательского элемента управления. Используйте элемент Property в DelegateControl для установки посредством отражения свойств связанных пользовательских элементов управления.

ПримечаниеПримечание

Установка свойства AllowMultipleControls в true приведет к тому, что все соответствующие элементы управления-кандидаты будут добавлены на страницу как дочерние элементы управления по отношению к элементу управления-делегату в соответствии с порядком, указанным атрибутом Sequence.

Элемент управления-делегат в действительности не является конструируемым, поскольку он не знает о реальном элементе управления, экземпляр которого создается внутри него. Максимум, что он может сделать — создать для конкретного экземпляра выбранного элемента управления код HTML времени разработки. Дизайнер обеспечивает возможность "жестко задать" элемент управления, что означает замену SharePoint:DelegateControl на текущий элемент управления, который возвращается посредством инфраструктуры компонентов. Затем разработчик может настроить этот элемент управления.

Допустимые области применения:

  • Ферма: да

  • Веб-приложение: да

  • Семейство сайтов: да

  • Веб-сайт: да

См. также

Задачи

Настройка элемента управления Delegate

Ссылка

DelegateControl

Концепции

Элементы управления Delegate