2009-07-12 21 views
5

Tengo un par de etiquetas en mi página con una clase de 'error', la regla para .Error es:control de ASP.NET con la visibilidad CSS: oculto, no se muestra en Control.Visible = true

.error { 
    color:Red; 
    visibility:hidden  
} 

el marcado de las etiquetas es:

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

entonces establezca la propiedad .Texto de la etiqueta de error en mi código detrás.
Si uso lblError.Visible = True cuando configuro el texto, la etiqueta no se muestra. ¿Alguna idea de por qué sería eso? Tal vez estoy equivocado aquí, pero pensé que establecer .Visible era como establecer el estilo de visibilidad.

Respuesta

13

La propiedad Visible afecta a la prestación de todo el elemento y no está relacionada con el atributo de visibilidad CSS. Cuando sea falso, Visible cuando evite que se muestre HTML en absoluto.

Para cambiar el atributo css, tendrá que hacerlo manualmente. Puede hacerlo por cualquiera de eliminación de la clase "error" del elemento (a través de la propiedad CssClass) o estableciendo un estilo = "visibility: visible" atribuir de forma manual a través de la propiedad Attributes (ya que el atributo de estilo se impone a una clase CSS):

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

Tenga una mirada en esta página, debe aclarar las cosas: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.style.aspx

Como se ha dicho antes:

la propiedad Visible es serverside y determina si el servidor va a representar el control o no (si no se representa, no HTML b e creado para él, y no está en el envío HTML final al cliente).

La propiedad Style controla el atributo de estilo del elemento. El elemento se representará pero puede controlar la visibilidad (CSS).

10

Usted se está confundiendo entre la visibilidad CSS y propiedad visible del lado del servidor del control. Para entenderlo mejor, le recomiendo que cree una página de muestra con una etiqueta, alternar la propiedad Visible entre verdadero y falso y ver el HTML generado.

Lo que encontrará es el siguiente. Tan cierto:

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

hará que:

Cuando se establece en falso, se trata de prestar:

<div> 

</div> 
+0

Sí, no estaba seguro de lo que era el diff. – Fermin

+0

Esto es super. Menos html para renderizar = sitio web más rápido. ¿Estoy en lo cierto al suponer que solo usaría el enfoque css si quisiera revelar dinámicamente un control después de hacer clic en un botón determinado, por ejemplo? – rory

+0

@rory sí para poder obtener este control en la página, se requerirá una devolución de datos al servidor. – Sarfaraaz

Cuestiones relacionadas