控件未出现在动态创建的用户控件上
时间:2020-03-06 14:39:53 来源:igfitidea点击:
我有一个名为DateTimeUC的用户控件,它的标记上有两个文本框:
<asp:TextBox ID="dateTextBox" runat="server"></asp:TextBox> <asp:TextBox ID="timeTextBox" runat="server"></asp:TextBox>
我正在另一个用户控件中动态创建此控件:
Controls.Add(GenerateDateTime(parameter));
private DateTimeUC GenerateDateTime(SomeParameter parameter)
{
DateTimeUC uc = new DateTimeUC();
uc.ID = parameter.Name;
return uc;
}
但是,当我渲染页面时,DateTimeUC不会渲染任何内容。我像这样检查它:
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
StringBuilder builder = new StringBuilder();
StringWriter swriter = new StringWriter(builder);
HtmlTextWriter hwriter = new HtmlTextWriter(swriter);
base.Render(hwriter);
string s = builder.ToString();
}
s为空,Controls.Count为0。我在做什么错?
解决方案
我们必须使用`LoadControl(" your_user_control_app_rel_path.ascx")方法,而不要使用" DateTimeUC uc = new DateTimeUC();"
不久前,我自己遇到了这个问题。我们需要使用LoadControl()方法。查看此页面。
我认为我们想将控件添加到页面的表单而不是表单本身。
代码:
Controls.Add( GenerateDateTime(parameter) );
尝试:
Page.Form.Controls.Add( GenerateDateTime(parameter) );

