控件不会出现在动态创建的用户控件上

时间:2008-09-24 14:15:37

标签: asp.net user-controls dynamic-controls

我有一个名为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.我做错了什么?

3 个答案:

答案 0 :(得分:9)

您必须使用LoadControl( "your_user_control_app_relative_path.ascx" )方法而不是“DateTimeUC uc = new DateTimeUC();”

答案 1 :(得分:0)

我一会儿就遇到了这个问题。您需要使用LoadControl()方法。查看this page就可以了。

答案 2 :(得分:0)

我认为你想将你的控件添加到页面的形式&amp;不是形式本身。

您的代码:

Controls.Add( GenerateDateTime(parameter) );

尝试:

Page.Form.Controls.Add( GenerateDateTime(parameter) );