0
我有一個派生自Panel的自定義ASP.NET控件。 它有一個默認的構造函數和RenderBeginTag,RenderContents和RenderEndTag覆蓋。ASP.NET自定義控件取消呈現
現在在構造函數中,我想檢查一些屬性,並在某些情況下我想防止/取消控件的完整呈現。
最簡單的方法是什麼?最好在那個構造函數中。現在我已經爲所有覆蓋方法添加了一個小檢查,但我相信這可以做得更聰明一點。
我有一個派生自Panel的自定義ASP.NET控件。 它有一個默認的構造函數和RenderBeginTag,RenderContents和RenderEndTag覆蓋。ASP.NET自定義控件取消呈現
現在在構造函數中,我想檢查一些屬性,並在某些情況下我想防止/取消控件的完整呈現。
最簡單的方法是什麼?最好在那個構造函數中。現在我已經爲所有覆蓋方法添加了一個小檢查,但我相信這可以做得更聰明一點。
你也可以覆蓋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;
}
}
謝謝您的回答。這看起來像我期待的改進! – Tys