Есть ли лучший способ получить доступ к элементам управления в ITemplate, чем FindControl ()? - PullRequest
5 голосов
/ 10 февраля 2010

Когда элемент управления добавляется в UpdatePanel, к нему все равно можно получить доступ из кода, находящегося за соответствующей страницей. Как это достигается? Могут ли разработчики пользовательских элементов управления сделать то же самое?

Другими словами, если я разрабатываю шаблонный элемент управления с использованием интерфейса ITemplate, есть ли способ подключить его (как кажется UpdatePanel), так что любые элементы управления, содержащиеся в (декларативно), могут быть доступны и с содержащей их страницы

1 Ответ

7 голосов
/ 10 февраля 2010

Вы можете добавить TemplateInstanceAttribute к свойству ITemplate, чтобы добиться этого, это приведет к продвижению элементов управления на уровень страницы:

[TemplateInstance(TemplateInstance.Single)]
public ITemplate AnonymousTemplate {
  get { ... }
  set { ... }
}

Из MSDN:

Класс TemplateInstanceAttribute позволяет пометить свойство шаблона как свойство, которое допускает создание одного или нескольких экземпляров. Шаблон, который допускает только одну реализацию, может ссылаться на элементы управления, содержащиеся в нем. Свойство ZoneTemplate является примером свойства, которое может быть создано только один раз.

...