2013-10-15 86 views
1

我想hiddenfield添加到服務器控件的代碼Page.Controls,但我有例外「控制收集不能被修改時DataBindInitLoadPreRenderUnload階段。「如何解決此問題?添加控制到服務器控件的代碼Page.Controls

public class MyServerControl: Control 
{ 
    HiddenField hf = new HiddenField{ID="hf"}; 
    protected override void OnInit(EventArgs e) 
    { 
    ... 
    Page.Controls.Add(hf); 
    } 
} 
+0

在哪個頁面中添加控件? – Saurabh

+0

我的控件位於佈局中,我想將控件的代碼中的hiddenfield添加到Page.Controls中。我試圖在控件的OnInit中做這件事,並得到了這個異常。 – mtkachenko

+1

您能否發佈您的所有代碼? – mit

回答

0

您需要聆聽引發的錯誤。您可以將控件添加到現有容器(例如Panel)或將PlaceHolderControl用於其預期用途。

動態添加控件(特別是回發)的問題是,ViewState不是非常智能,並按順序加載控件。除非您將控件附加到最後,否則最終會導致無效的ViewState。

+1

您還應該將控件添加到自定義控件控件集合,而不是頁面集合。 –