ASP.NET自定义控件取消渲染

时间:2012-11-13 13:20:40

标签: c# asp.net custom-controls

我有一个派生自Panel的自定义ASP.NET控件。 它有一个默认构造函数,RenderBeginTag,RenderContents和RenderEndTag覆盖。

现在在构造函数中我想检查几个属性,在某些情况下我想阻止/取消控件的完整呈现。

最简单的方法是什么?最好就在那个构造函数中。现在我已经为所有覆盖方法添加了一个小检查,但我确信这可以做得更聪明。

1 个答案:

答案 0 :(得分:3)

您也可以覆盖WebControl.Render方法来执行检查 - 这样您就不必检查3种不同的方法。

但更好的解决方案是设置this.Visible = false - 这可以防止调用渲染方法,并且还可以防止PreRender事件被引发(它们的设计应该只在可见控件上引发)。

我会覆盖Visible属性并在那里添加检查:

public override bool Visible
{
    get
    {
        var b = base.Visible;
        if (!b || this.ControlShouldNotBeRendered())
            return false;
        return true;
    }

    set
    {
        base.Visible = value;
    }
}