是否有更好的方法来访问ITemplate中的控件而不是FindControl()?

时间:2010-02-10 14:34:06

标签: asp.net code-behind itemplate custom-controls

当控件添加到UpdatePanel时,仍然可以从包含页面后面的代码访问它。这是如何实现的?自定义控件开发人员可以这样做吗?

换句话说,如果我使用ITemplate接口开发模板控件,是否有一种方法可以将其连接起来(如UpdatePanel似乎),以便可以从包含页面访问(声明性地)包含的任何控件?

1 个答案:

答案 0 :(得分:7)

您可以在ITemplate属性上添加TemplateInstanceAttribute来实现此目的,它可以将控件提升到页面级别:

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

来自MSDN:

  

TemplateInstanceAttribute类允许您将模板属性标记为允许单个或多个实例化的属性。仅允许单个实例化的模板可以引用其中包含的控件。 ZoneTemplate属性是一个只能实例化一次的属性的示例。