如何将ASP.NET PlaceHolder控件从Page控件集合移动到自定义Control的输出?

时间:2010-02-26 19:51:16

标签: asp.net controls custom-controls web-controls findcontrol

我正在编写一个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 个答案:

答案 0 :(得分:3)

Page对象(以及所有Web控件)都有一组控件...很方便地调用控件。所以Page.Controls.Remove(myPlaceholder)应该可以解决问题。

虽然...... ASP.NET可能会抱怨修改其父级的控件。在这种情况下,您可能需要在父页面上调用方法来执行脏工作,或者触发父处理的事件。