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);
    }
}

ただし、これにより、プレースホルダーが 2 つの場所 (カスタム コントロール出力 (良い) とページ内の元の場所 (悪い)) にレンダリングされます。

このプレースホルダーをページから削除して、カスタム コントロール内にのみ出力する方法はありますか?

4

1 に答える 1

3

Page オブジェクト (およびすべての Web コントロール) には、コントロールのコレクションがあります...便利なように、コントロールと呼ばれます。したがって、 Page.Controls.Remove(myPlaceholder) でうまくいくはずです。

ただし... ASP.NET は、親を変更するコントロールについて不平を言うかもしれません。その場合、おそらく、親ページでメソッドを呼び出して汚い作業を行うか、親が処理するイベントを発生させる必要があります。

于 2010-02-26T20:32:04.597 に答える