我需要使用objChildControl.RenderControl或objControl.RenderChildren手動呈現我的子控件。但看起來這些方法並不完整。ASP.NET RenderControl或RenderChildren失敗
我的所有子控件都使用OnPreRender事件來註冊clientscript和客戶端樣式表(因爲這些只能在prerender事件中創建)。
我有2個主要問題,將當前的System.Web.UI.Page對象傳遞給子控件,並確保在這些子控件上觸發OnPreRender事件。
看來我不能在我的子控件上使用RenderControl方法,因爲OnPreRender事件不會被調用。 但我可以通過頁面對象objChildControl.Page = Me.Page
當我使用RenderChildren時,我無法傳遞Page對象,或者我可以嗎? 而且我不確定在使用RenderChildren時是否會調用OnPreRender事件。
一些幫助,將不勝感激,因爲我卡住了;)
更新
我找到了一種方法得到的結果,我需要,但它不是我想要的解決方案。 例子:
代碼我想:
<wc:ParentControl id="objParent" runat="server" bla="etc">
<Content> <!-- This is an InnerProperty of the ParentControl --><DIV>bla bla bla bla.....<wc:SomeControl id="objSomeControl" runat="server" /><wc:3rdPartyControl id="obj3rdPartyControl" runat="server" /></DIV></Content>
</wc:ParentControl>
代碼隱藏:objParentControl.Content.RenderControl(作家)
然後上面提到的問題將開始。如何確保OnPreRender將被稱爲內容中的所有孩子?其不工作
代碼(但隨後的RenderControl方法只是沒用):
<wc:ParentControl id="objParentControl" runat="server"></wc:ParentControl>
<wc:Content id="objContent" runat="server"><DIV>bla bla bla bla.....<wc:SomeControl id="objSomeControl" runat="server" /><wc:3rdPartyControl id="obj3rdPartyControl" runat="server" /></DIV></wc:Content>
然後,只需使用wc的對RenderBeginTag和RenderEndTag:內容控制。 然後調用OnPreRender事件。 但我不想通過使用InnerProperty將內容嵌入到parentcontrol中。 然後通過RenderControl或RenderChildren手動渲染childcontrols。