2010-02-10 61 views
5

将控件添加到UpdatePanel时,仍然可以从包含页面的代​​码中访问该控件。这是如何实现的?定制控制开发人员可以做同样的事换句话说,如果我使用ITemplate接口开发一个模板控件,是否有一种方法可以将它连接起来(就像UpdatePanel似乎一样),以便可以从包含页面访问(声明式地)包含的任何控件也?有没有比FindControl()更好的访问ITemplate中的控件的方法?

回答

7

您可以在您的ITemplate属性添加一个TemplateInstanceAttribute达到这个目的,它具有促进控制到页面级的效果:

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

从MSDN:

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

+0

感谢尼克,这是有用的信息 - 我不知道这一点。那么,即使您可以在一个页面上拥有多个UpdatePanel控件,也可以深入了解UpdatePanel如何引用控件? – James 2010-02-11 04:04:34

+1

@James - 虽然在这种情况下可以有多个UpdatePanel控件(或任何ITemplate父控件)**,但每个**只能有1个ITemplate子控件,在UpdatePanel中,您不能在同一个面板中拥有2个,因此其中的控件**不会显示两次,导致页面中出现重复的ID问题。 – 2010-02-11 11:14:11

+0

谢谢尼克 - 那太好了。 – James 2010-02-11 18:55:49

相关问题