我有一个名为UC_Widget的UserControl,它继承自System.Web.UI.UserControl和ITextControl。它还会覆盖AddParsedSubObject函数。当我像下面这样使用它时,它运行良好。
<uc1:UC_Widget ID="UC_Widget1" runat="server">
hello world
</uc1:UC_Widget>
但是,它出现了一个问题:如果我想使用此控件来包含另一个用户控件, 我怎么能这样做?很多thx!
<uc1:UC_Widget ID="UC_Widget1" runat="server">
hello world
<uc1:UC_Widget ID="UC_Widget2" runat="server">
guy
</uc1:UC_Widget>
</uc1:UC_Widget>
thx Nix,我已经通过AddParsedSubObject方法解决了这个问题。
protected override void AddParsedSubObject(object obj)
{
if (this.HasControls())
{
base.AddParsedSubObject(obj);
}
else if (obj is LiteralControl)
{
HtmlContent.Append(((LiteralControl)obj).Text);
this.Text = HtmlContent.ToString();
}
else
{
string text1 = this.Text;
UC_eClinicWidget tmp = obj as UC_eClinicWidget;
if (tmp != null)
{
HtmlContent.Append(GetControlHtml(tmp));
this.Text = HtmlContent.ToString();
}
}
}
答案 0 :(得分:0)
这将导致无限循环...如果UC_Widget包含另一个UC_Widget,那么内部UC_Widget也将包含UC_Widget,依此类推。你需要提出更好的设计。
答案 1 :(得分:0)
虽然可能有更好的设计,但这仍然是可能的。
@Tom Vervoort的反例
<asp:UpdatePanel>
<ContentTemplate>
<asp:UpdatePanel>
<ContentTemplate>
Hi there
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>