1

什麼是在ASP.NET生命週期中動態添加子控件的正確事件/方法?什麼是添加嵌套控件的正確ASP.NET控件事件/方法?

我的目標是確保用戶控件上的所有輸入控件都具有基於來自外部文件的配置的正確關聯的Validator和Label控件。

看來正確的地方應該是OnInit(EventArgs e)CreateChildControls()。他們兩個都表現得有點意外,而不是試圖去調試他們每個人,我想我首先會問你們哪一個(或其他)使用。

+0

小心解釋你的問題? – asawyer

+0

@asawyer,我一直在努力解決問題。到目前爲止,我得到了一個'OutOfMemoryException'(讓我覺得在那裏我造成了一個無限循環),「發現了具有相同ID的多個控件dynamicAddedRequiredFieldValdiator'」(讓我覺得我把它放在導致例程的地方被調用兩次),「集合被修改,枚舉可能不會執行」錯誤,並且「在DataBind,Init,Load,PreRender或Unload階段無法修改控件集合。」。 – smartcaveman

+0

這是一個自定義服務器控件還是一個Web用戶控件(ASCX)? –

回答

2

它的OnInit,你需要在第一次加載後回覆。

+0

因此,我將常規的OnInit稱爲常規,並且總是對PostBack進行調用?或者我從OnInit調用它,並確保它是(a)第一次加載或(b)回發。你能更具體一點嗎? – smartcaveman

+0

如果你把代碼放在'OnInit'中,每次發佈頁面時都會調用它 - 第一次,最後一次和每次之間的回發。 –

+0

@smartcaveman - 在OnInit中創建您的控件,並在每次調用時執行此操作,例如,不檢查回發。 – Sprintstar

1

由於這是一個Web用戶控件(ASCX),在OnInit期間創建動態控件。通過在OnInit期間創建它們,它們將在首頁加載和每次回發時創建。

CreateChildControls方法通常用於在自定義服務器控件中進行渲染。

相關問題