我有一个派生自Panel的自定义ASP.NET控件。 它有一个默认构造函数,RenderBeginTag,RenderContents和RenderEndTag覆盖。
现在在构造函数中我想检查几个属性,在某些情况下我想阻止/取消控件的完整呈现。
最简单的方法是什么?最好就在那个构造函数中。现在我已经为所有覆盖方法添加了一个小检查,但我确信这可以做得更聪明。
答案 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;
}
}