Элемент управления 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