2009-07-12 17 views
5

Ben 'hata' bir sınıf ile sayfamda birkaç etiketlere sahip, .error için kural şudur:ASP.NET kontrolü: Gerçek Control.Visible = gösterilmiyordur, gizli

.error { 
    color:Red; 
    visibility:hidden  
} 
etiketler için

biçimlendirme geçerli:

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

sonra arkasında benim kod hata etiketin .Text özelliğini ayarlayın.
Metni ayarladığımda lblError.Visible = True kullanırsam, etiket gösterilmez. Bunun neden olabileceği hakkında bir fikrin var mı? Burada yanlış olabilirim ama bu ayarı düşündüm .Visible görünürlük stilini ayarlamak gibiydi?

cevap

13

Visible özelliği, tüm öğenin işlenmesini etkiler ve CSS görünürlük özelliği ile ilgisi yoktur. Yanlış olduğunda, herhangi bir HTML'nin oluşturulmasını engellerken Görünür olun.

css özniteliğini değiştirmek için el ile yapmanız gerekir. Bunu "hata" sınıfını öğeden (CssClass özelliği aracılığıyla) veya Attributes özelliğiyle bir stil = "görünürlük: görünür" özniteliği ayarlayarak yapabilirsiniz (stil özniteliği bir css sınıfını geçersiz kılar):

önce yazılı olarak http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.style.aspx

: Sunucu denetimi işlemek veya etmezse

Görünür özellik sunucu-ve belirler (eğer

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

bu sayfaya bir göz, bir şeyleri açıklamak gerekir var işlenmiyor, HTML yok e bunun için oluşturuldu ve nihai HTML'ye istemciye gönderilmiyor).

Stil özelliği, öğenin stil özelliğini denetler. Öğe oluşturulacak ancak görünebilirliği (CSS) kontrol edebilirsiniz.

10

CSS görünürlüğü ve denetimin sunucu tarafı Visible özelliği arasında kafanız karışıyor. Bunu daha iyi anlamak için etiketli bir örnek sayfa oluşturmanızı, Visible özelliğini true ile false arasında değiştirmenizi ve oluşturulan HTML'yi görüntülemenizi tavsiye ederim.

Aşağıdakiler aşağıdadır. Gerçek gibi:

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

hale Will: false olarak ayarlandığında

, render edecektir:

<div> 

</div> 
+0

Evet, fark ne olduğundan emin değildi. – Fermin

+0

Bu süper. Daha az html render = daha hızlı web sitesi. Belirli bir tuşa tıklandıktan sonra bir denetimi dinamik olarak göstermek istediğimde sadece css yaklaşımını kullanabileceğimi varsayıyor muyum? – rory

+0

@rory evet, bu denetimi tekrar sayfaya almak için yine sunucuya bir geri gönderme gerekli olacaktır. – Sarfaraaz