以编程方式附加的多个服务器控件实例不显示?

时间:2009-11-19 10:08:03

标签: c# asp.net controls

在我的页面背后的代码中,我想在多个地方附加标签。要实现这一点,并避免创建我尝试过的同一标签的多个实例:

        Label lblNone = new Label();
        lblNone.Text = "<br/> None. <br/>";

        Master.mainContent.Controls.Add(lblNone);
        Master.mainContent.Controls.Add(lblNone);
        Master.mainContent.Controls.Add(lblNone);

出于某种原因,我只看到“无”的1个实例。在我的页面上?

为什么会这样?

2 个答案:

答案 0 :(得分:1)

你没有选择..你需要为你想在屏幕上看到的每个控件创建一个Label实例。

这是因为ControlCollection类的行为。

  1. 它不允许多次添加相同的“引用”。
  2. 当您向一个ControlCollection添加一个控件时,它会自动从之前删除,因此,即使您将标签添加到不同的ControlCollections,也不会有效。
  3. PS:通过ControlCollection我的意思是属性的类型Master.mainContent.Controls

答案 1 :(得分:1)

您可能会发现为此创建方法更容易: -

protected void Page_Load(object sender, EventArgs e)
{
    this.Controls.Add(CreateLiteral("text"));
    this.Controls.Add(CreateLiteral("text"));
    this.Controls.Add(CreateLiteral("text"));
}

private Literal CreateLiteral(string Content)
{
    Literal L = new Literal();
    L.Text = Content;
    return L;
}

谢谢,

菲尔。