
CompositeControl派生自WebControls,重寫了Render(HtmlTextWriter writer)方法。在調用基類WebControl的Render(HtmlTextWriter writer)方法前,先調用了EnsureChildControls()方法,以確定建立子控件。
①EnsureChildControls方法
該方法用于确定伺服器控件是否建立了子控件或子控件是否在建立中。如果未建立子控件且子控件不在建立中,則建立子控件。該方法首先檢查ChildControlsCreated屬性的目前值。如果此值為false,則調用CreateChildControls方法。當需要確定已建立子控件時,将調用該方法。大多數情況下,自定義伺服器控件的開發人員無須重寫此方法。CompositeControl類繼承自Control類的EnsureChildControls()方法源代碼如下:
② ChildControlsCreated屬性
該屬性的資料類型為bool,其用于擷取一個值,該值訓示是否已建立伺服器控件的子控件。如果已建立子控件則該屬性為true;否則為false。該屬性主要是為了避免CreateChildControls方法重複建立控件。
③ CreateChildControls方法
重寫從Control繼承的受保護的CreateChildControls方法,以建立子控件的執行個體,并将它們添加到Controls集合,此方法可能會在頁面和控件的生命周期内反複調用。為避免控件重複,ChildControlsCreated屬性通常被設定為true。如果此屬性傳回true,則不再調用CreateChildControls方法。
實作代碼:
測試代碼:
測試截圖:
NonEmptyBox 控件呈現的HTML:
EmailInput 控件呈現的HTML:
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
本文轉自韓兆新部落格部落格園部落格,原文連結:http://www.cnblogs.com/hanzhaoxin/p/4077464.html,如需轉載請自行聯系原作者