2009-07-12 42 views
5

我有我的網頁上幾個標籤與類「錯誤」的,對於.error規則是:ASP.NET控件與CSS visibility:hidden的,不被顯示在Control.Visible =真

.error { 
    color:Red; 
    visibility:hidden  
} 

的標記的標籤是:

<asp:Label ID="lblError" runat="server" CssClass="error" ></asp:Label> 

然後我設置錯誤標籤的。文本屬性在我後面的代碼。
如果我在設置文本時使用lblError.Visible = True,則不顯示標籤。任何想法爲什麼會這樣?我可能在這裏錯了,但我認爲設置.Visible就像設置可見性風格?

回答

13

Visible屬性會影響整個元素的渲染,並且與CSS可見性屬性無關。如果爲false,則阻止顯示任何HTML。

要更改css屬性,您需要手動完成。您可以通過從元素中刪除「錯誤」類(通過CssClass屬性)或通過Attributes屬性手動設置style =「visibility:visible」屬性來執行此操作(因爲style屬性會覆蓋css類):

control.Attributes["style"] = "visibility: visible"; 
10

您對CSS可見性和控件的服務器端Visible屬性感到困惑。爲了更好地理解它,我建議你創建一個帶有標籤的示例頁面,將Visible屬性在true和false之間切換並查看生成的HTML。

你會發現如下。作爲真正:

<div> 
    <label runat="server" visible="true">Hello</label> 
</div> 

將呈現:

設置爲false時,它會呈現:

<div> 

</div> 
+0

是啊,我不知道什麼是差異。 – Fermin 2009-07-12 10:31:52

+0

這是超級。減少HTML渲染=更快的網站。如果我想在點擊某個按鈕後動態顯示控件,我是否正確地假設我只會使用css方法? – rory 2016-08-05 07:31:38

+0

@ rory是的,爲了在頁面中獲得這個控件,需要回傳到服務器。 – Sarfaraaz 2016-09-23 07:48:12