如何将ASP.NET占位符控件从页面控件集合移动到自定义控件';谁的产量?

如何将ASP.NET占位符控件从页面控件集合移动到自定义控件';谁的产量?,asp.net,controls,custom-controls,web-controls,findcontrol,Asp.net,Controls,Custom Controls,Web Controls,Findcontrol,我正在编写一个ASP.NET自定义控件 在自定义控件代码中,我在页面中找到一个占位符控件,如下所示: this.myPlaceholder = Page.FindControl("placeholder1") as PlaceHolder; 然后,我将占位符呈现为自定义控件的输出: protected override void Render(HtmlTextWriter output) { if (this.myPlaceholder != null) { t

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

在自定义控件代码中,我在页面中找到一个占位符控件,如下所示:

this.myPlaceholder = Page.FindControl("placeholder1") as PlaceHolder;
然后,我将占位符呈现为自定义控件的输出:

protected override void Render(HtmlTextWriter output)
{
    if (this.myPlaceholder != null)
    {
        this.myPlaceholder.RenderControl(output);
    }
}
但是,这会导致占位符在两个位置呈现—在自定义控件输出(良好)和页面的原始位置(不良)

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

页面对象(以及所有web控件)有一组控件。。。非常方便地调用控件。所以Page.Controls.Remove(myPlaceholder)应该可以做到这一点

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

页面对象(以及所有web控件)有一组控件。。。非常方便地调用控件。所以Page.Controls.Remove(myPlaceholder)应该可以做到这一点


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

+1您在这一点上以秒计击败了我。删除我的答案,因为您的是betterI,我将其称为Page.Controls.Remove(this.myPlaceholder)从上面的呈现方法中删除。我收到错误“集合已修改;枚举操作可能无法执行”。对。。。操作顺序在这里很重要。在渲染事件开始之前,必须从页面中删除此表单。在PreRender中执行。你在这一点上以秒的速度击败了我。删除我的答案,因为您的是betterI,我将其称为Page.Controls.Remove(this.myPlaceholder)从上面的呈现方法中删除。我收到错误“集合已修改;枚举操作可能无法执行”。对。。。操作顺序在这里很重要。在渲染事件开始之前,必须从页面中删除此表单。在PreRender中执行此操作。