开发者

How to move ASP.NET PlaceHolder control from Page controls collection to a custom Control's output?

开发者 https://www.devze.com 2022-12-21 21:19 出处:网络
I am writing an ASP.NET custom control. In my custom control code, I find a PlaceHolder control in the page like so:

I am writing an ASP.NET custom control.

In my custom control code, I find a PlaceHolder control in the page like so:

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

Then, I render the placeholder as the output of the custom control:

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

However, th开发者_开发百科is causes the placeholder to be rendered in two places - in the custom control output (good) and in the original location in the page (bad).

Is there any way I can remove this placeholder from the page so it is only output inside the custom control?


The Page object (and all web controls) has a collection of controls... called, conveniently enough, Controls. So Page.Controls.Remove(myPlaceholder) should do the trick.

Although... ASP.NET might complain about a control modifying its parent. In that case, you probably need to call a method on your parent page to do the dirty work, or fire off an event that your parent handles.

0

精彩评论

暂无评论...
验证码 换一张
取 消