2010-02-10 37 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

相關問題