2011-02-16 77 views
0

所以我試圖動態加載一個用戶控件到另一個用戶控件中的佔位符在一個updatepanel內。在updatepanel中動態加載用戶控件

基本上我有這個標記:

<asp:UpdatePanel ID="upPopup" runat="server"> 
    <ContentTemplate> 
     <UC:Popup runat="server" ID="UC_Popup" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

然後這個標記是用戶控件(彈出)內:

<div id="modal"> 
    <asp:PlaceHolder ID="phPopupPlaceholder" runat="server"></asp:PlaceHolder> 
    <asp:Label ID="lblModal" runat="server"></asp:Label> 
</div> 

在彈出的用戶控件的代碼隱藏我:

public void Show(UserControl control) { 
    this.phPopupPlaceholder.Controls.Add(control); 
    this.lblModal.Text = "Loaded"; 
} 

我在別處稱這個展示方法爲:

Popup.show(new MyUserControl()); 

雖然沒有加載到佔位符中。

但在表演方法,我可以罰款放入普通的服務器控件這樣的:

this.phPopupPlaceholder.Controls.Add(new Label(){ Text = "Label!" }); 

可爲什麼正規控件加載的罰款,但沒有加載我的用戶任何人給我解釋一下?

回答

1

好吧,我瞭解到我必須明顯地使用LoadControl方法,但我不太明白爲什麼這是必要的:/