Несколько экземпляров серверного управления, подключенных программно, не отображаются? - PullRequest
0 голосов
/ 19 ноября 2009

В коде моей страницы я хочу прикрепить ярлык в нескольких местах. Чтобы достичь этого и избежать создания нескольких экземпляров одного и того же ярлыка, который я пробовал:

        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 ]

1 голос
/ 19 ноября 2009

Возможно, вам будет проще создать метод для этого: -

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;
}

Спасибо,

Phil.

1 голос
/ 19 ноября 2009

У вас нет выбора. Вам нужно создать один экземпляр Label для каждого элемента управления, который вы хотите видеть на экране.

Это из-за поведения класса ControlCollection.

  1. не разрешит множественные добавления одной и той же "ссылки".
  2. Когда вы добавляете элемент управления к одному ControlCollection, он автоматически удаляется из предыдущего, поэтому даже если вы добавляете метку в другие ControlCollections, он не будет работать.

PS: Под ControlCollection я имею в виду тип свойства Master.mainContent.Controls

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...