Как переместить элемент управления ASP.NET PlaceHolder из коллекции элементов управления страницы в вывод пользовательского элемента управления? - PullRequest
0 голосов
/ 26 февраля 2010

Я пишу пользовательский элемент управления ASP.NET.

В своем коде пользовательского элемента управления я нашел элемент управления PlaceHolder на странице следующим образом:

this.myPlaceholder = Page.FindControl("placeholder1") as PlaceHolder;

Затем я отображаю заполнитель как вывод пользовательского элемента управления:

protected override void Render(HtmlTextWriter output)
{
    if (this.myPlaceholder != null)
    {
        this.myPlaceholder.RenderControl(output);
    }
}

Однако это приводит к тому, что заполнитель отображается в двух местах - в выходных данных пользовательского элемента управления (хорошо) и в исходном месте на странице (плохо).

Можно ли как-нибудь удалить этот заполнитель со страницы, чтобы он выводился только внутри пользовательского элемента управления?

1 Ответ

3 голосов
/ 26 февраля 2010

Объект Page (и все веб-элементы управления) имеет коллекцию элементов управления ... называемых, как ни странно, элементами управления. Поэтому Page.Controls.Remove (myPlaceholder) должен сделать свое дело.

Хотя ... ASP.NET может жаловаться на элемент управления, модифицирующий его родителя. В этом случае вам, вероятно, потребуется вызвать метод на родительской странице, чтобы выполнить грязную работу, или вызвать событие, которое обрабатывает ваш родитель.

...