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.
精彩评论