2012-10-31 53 views
0

不知有什麼辦法可以做到這一點:在Asp.NET控制使用變量屬性在HTML視圖

<asp:Label ID="lblSomething" runat="server" Visible="this.ShowLabel"/> 

,並在後面的代碼:

public bool ShowLabel {get;set;} 

我知道你們中的一些可能會問我爲什麼需要它,但我覺得這種方法比在後面的代碼中說這個更清晰:

lblSomething.Visible = this.ShowLabel 

而且我也可以這麼說urce查看:

<% if(this.ShowLabel){ %> 
    <asp:Label ID="lblSomething" runat="server" Text="Something"/> 
<% } %> 

但是,再次,第一個對我來說會更直觀。有任何想法嗎?

你的情況

回答

2

老實說,使用Visible屬性,而不是創建其他布爾,使Visible最簡單,最清潔,最優雅的解決方案具有相同的值

另一方面,Label控制不是密封類。如果你需要做這樣的事情,我會找到更好的獲得Label和實施ShowLabel屬性是這樣的:

private bool _showLabel; 

public bool ShowLabel 
{ 
    get { return _showLabel; } 
    set 
    { 
     _showLabel = value; 
     Visible = value 
    } 
} 

最後,新MyLabel控制用法是:

<gray:MyLabel ID="lblSomething" runat="server" ShowLabel="true"/> 

不管怎樣,再次,如果你使用Visible來隱藏這種控制,不要重新發明輪子:使用來自ASP.NET的東西。但是,如果你的問題顯示了一個示例,但真實世界的場景不是Visible,而是其他的東西,我認爲你應該使用繼承(這比你的提議更優雅)。

事實上,一個很好的ASP.NET Web Forms實踐是與表示邏輯完全分離的標記。

2

如果您ShowLabel財產實際只是標籤的可見性屬性的包裝,你可以用更換您的屬性定義:

public bool ShowLabel 
{ 
    get { return lblSomething.Visible; } 
    set { lblSomething.Visible = value; } 
} 

但是,這並沒有真正給你比新多等可見性屬性的名稱。

相關問題