2012-11-13 67 views
0

我有一個派生自Panel的自定義ASP.NET控件。 它有一個默認的構造函數和RenderBeginTag,RenderContents和RenderEndTag覆蓋。ASP.NET自定義控件取消呈現

現在在構造函數中,我想檢查一些屬性,並在某些情況下我想防止/取消控件的完整呈現。

最簡單的方法是什麼?最好在那個構造函數中。現在我已經爲所有覆蓋方法添加了一個小檢查,但我相信這可以做得更聰明一點。

回答

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; 
    } 
} 
+1

謝謝您的回答。這看起來像我期待的改進! – Tys

相關問題