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