我正在编写一个ASP.NET自定义控件。
在我的自定义控制代码中,我在页面中找到一个PlaceHolder控件,如下所示:
this.myPlaceholder = Page.FindControl("placeholder1") as PlaceHolder;
然后,我将占位符渲染为自定义控件的输出:
protected override void Render(HtmlTextWriter output)
{
if (this.myPlaceholder != null)
{
this.myPlaceholder.RenderControl(output);
}
}
但是,这会导致占位符在两个位置呈现 - 在自定义控件输出(好)和页面中的原始位置(坏)。
有什么方法可以从页面中删除这个占位符,这样它只会在自定义控件中输出吗?
答案 0 :(得分:3)
Page对象(以及所有Web控件)都有一组控件...很方便地调用控件。所以Page.Controls.Remove(myPlaceholder)应该可以解决问题。
虽然...... ASP.NET可能会抱怨修改其父级的控件。在这种情况下,您可能需要在父页面上调用方法来执行脏工作,或者触发父处理的事件。