5
將控件添加到UpdatePanel時,仍然可以從包含頁面的代碼中訪問該控件。這是如何實現的?定製控制開發人員可以做同樣的事換句話說,如果我使用ITemplate接口開發一個模板控件,是否有一種方法可以將它連接起來(就像UpdatePanel似乎一樣),以便可以從包含頁面訪問(聲明式地)包含的任何控件也?有沒有比FindControl()更好的訪問ITemplate中的控件的方法?
將控件添加到UpdatePanel時,仍然可以從包含頁面的代碼中訪問該控件。這是如何實現的?定製控制開發人員可以做同樣的事換句話說,如果我使用ITemplate接口開發一個模板控件,是否有一種方法可以將它連接起來(就像UpdatePanel似乎一樣),以便可以從包含頁面訪問(聲明式地)包含的任何控件也?有沒有比FindControl()更好的訪問ITemplate中的控件的方法?
您可以在您的ITemplate屬性添加一個TemplateInstanceAttribute達到這個目的,它具有促進控制到頁面級的效果:
[TemplateInstance(TemplateInstance.Single)]
public ITemplate AnonymousTemplate {
get { ... }
set { ... }
}
從MSDN:
的TemplateInstanceAttribute類允許你將模板屬性標記爲允許單個或多個實例化的屬性。只允許一個實例化的模板可以包含在其中的控件引用。 ZoneTemplate屬性是一個只能實例化一次的屬性的示例。
感謝尼克,這是有用的信息 - 我不知道這一點。那麼,即使您可以在一個頁面上擁有多個UpdatePanel控件,也可以深入瞭解UpdatePanel如何引用控件? – James 2010-02-11 04:04:34
@James - 雖然在這種情況下可以有多個UpdatePanel控件(或任何ITemplate父控件)**,但每個**只能有1個ITemplate子控件,在UpdatePanel中,您不能在同一個面板中擁有2個,因此其中的控件**不會顯示兩次,導致頁面中出現重複的ID問題。 –
2010-02-11 11:14:11
謝謝尼克 - 那太好了。 – James 2010-02-11 18:55:49