0

我正在编写一个 ASP.NET 自定义控件。

在我的自定义控件代码中,我在页面中找到了一个 PlaceHolder 控件,如下所示:

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

然后,我将占位符渲染为自定义控件的输出:

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

但是,这会导致占位符在两个位置呈现 - 在自定义控件输出中(好)和在页面中的原始位置(坏)。

有什么方法可以从页面中删除此占位符,使其仅在自定义控件中输出?

4

1 回答 1

3

Page 对象(以及所有 Web 控件)有一个控件集合......称为控件,非常方便。所以 Page.Controls.Remove(myPlaceholder) 应该可以解决问题。

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

于 2010-02-26T20:32:04.597 回答