2017-06-13 43 views
0

我正在使用ASP.NET用戶控件將一些功能封裝在我的應用程序中。我知道,控件中的Page_Load處理程序在託管它的頁面中的Page_Load處理程序之後運行,因此我無法從主機頁面的Page_Load初始化控件,這很煩人。我在主頁上使用Page_LoadComplete來做到這一點,並且在設計時將控件靜態添加到頁面的HTML時,它可以正常工作。動態加載的ASP.NET用戶控件無法初始化

但是,當我嘗試在運行時動態加載控件時,事情就會出錯。我成功實例化控件並將其添加到頁面中的Panel。我將它添加到一個集合中,以便像前一種情況一樣,將初始化推遲到Page_LoadComplete。但是,當Page_LoadComplete中的代碼嘗試初始化控件時,它失敗,因爲顯然控件尚未加載。具體來說,我發現當控件的Page_Load被觸發時(在主頁的Page_Load之後),它的本地字段還沒有被初始化。例如,映射用戶控件中的子控件的字段仍然爲空,我添加的其他字段也是如此。你可能會爭辯說,我添加的字段應該由我初始化,但映射子控件的字段應該在Page_Load運行之前初始化,對吧?

這是預期的行爲?如果是這樣,動態加載時我能做些什麼來正確初始化我的控制?非常感謝。

回答

1

event diagram

嘗試添加控件在PreInit階段,這樣的控制,在初始階段,在那裏,回傳數據

+0

我試過的處理之前可用的,而問題保持不變。我通過在HTML中使用靜態聲明的控件,並將初始化推遲到Page_LoadComplete來解決問題。 – CesarGon