所以我试图将一个usercontrol动态加载到updatepanel中另一个usercontrol的占位符中。
基本上我有这个标记:
<asp:UpdatePanel ID="upPopup" runat="server">
<ContentTemplate>
<UC:Popup runat="server" ID="UC_Popup" />
</ContentTemplate>
</asp:UpdatePanel>
然后在usercontrol(Popup)中的这个标记:
<div id="modal">
<asp:PlaceHolder ID="phPopupPlaceholder" runat="server"></asp:PlaceHolder>
<asp:Label ID="lblModal" runat="server"></asp:Label>
</div>
在popup usercontrol的代码隐藏中,我有:
public void Show(UserControl control) {
this.phPopupPlaceholder.Controls.Add(control);
this.lblModal.Text = "Loaded";
}
我将这种show方法称为:
Popup.show(new MyUserControl());
尽管没有任何内容加载到占位符中。
但是在show方法中我可以加载常规服务器控件,如下所示:
this.phPopupPlaceholder.Controls.Add(new Label(){ Text = "Label!" });
有人可以向我解释为什么常规控件加载正常,但我的usercontrol没有加载?
答案 0 :(得分:1)
好的,我了解到我显然必须使用LoadControl方法,但我不太明白为什么这是必要的:/