2011-08-02 10 views
6

Si configuro la propiedad de algún control Visible = "false", no puedo ver el control en el HTML generado de mi página aspx. Pero cuando uso display: none en la etiqueta de estilo para ese control, veo el control en gris en el código HTML. ¿Porqué es eso?Pregunta con respecto a Visible = falso y visualización: ninguno;

También, Si encuentro algún tipo de control que no es necesaria en la página más: -

  1. debo comentar que salir de mi página?
  2. ¿Debo establezca su propiedad Visible = false"
  3. debo configurar la pantalla: ninguno

¿Cuál sería el mejor enfoque teniendo en cuenta las limitaciones de tiempo y la pesadez de la página

A continuación se muestra? el código HTML que se generó de mi página de prueba: -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title> </title> 
</head> 
<body> 
<form id="form1" action="testvisibility.aspx" method="post" name="form1"> 
<div> 
<input id="__VIEWSTATE" type="hidden" value="/wEPDwUKMTY2NDk3NDQzNQ9kFgICAw9kFgQCBw8PFgIeB1Zpc2libGVoZGQCCQ8WAh4Fc3R5bGUFDWRpc3BsYXk6bm9uZTtkZEjYzMWMovvrGmuSrQHwc5ZXgqXCrf+lekz1GgsdjUd+" name="__VIEWSTATE"> 
</div> 
<div> 
visiblelabel:: 
<span id="visiblelabel">visiblelabel</span> 
<br> 
labelwithvisiblefalseonaspx:: 
<br> 
labelwithdisplaynoneonaspx:: 
<div style="display: none;"> 
<span id="labelwithdisplaynoneonaspx">labelwithdisplaynoneonaspx</span> 
</div> 
<br> 
labelwithvisiblefalseonserverside:: 
<br> 
labelwithdisplaynoneonserverside:: 
<div id="divforlabelwithdisplaynoneonserverside" style="display: none;"> 
<span id="labelwithdisplaynoneonserverside">labelwithdisplaynoneonserverside</span> 
</div> 
<br> 
</div> 
</form> 
</body> 
</html> 

Respuesta

8

Si desea mostrar u ocultar dinámicamente el control mediante Ajax/etc, o si el control contiene información que necesita su página, configure display:none en CSS.

Si no desea representar el control en absoluto en determinadas situaciones, establezca Visible="false". Como mantiene el HTML del control fuera de la página, tiene páginas ligeramente más pequeñas, pero si desea mostrar el control a través de Ajax/etc, esto no funcionará.

Si no desea representar el control en absoluto, período, no lo comente - elimínelo por completo. Todos los controles, visibles o no, aún requieren procesamiento, por lo que Visible = falso está desperdiciando CPU (y posiblemente causando efectos secundarios) si nunca intenta renderizar el control. Y realmente no quieres muchas cosas comentadas flotando; solo hace que el mantenimiento sea más difícil. Siempre puede recuperarlo desde su control de revisión si encuentra que lo necesita más adelante. (Usted está usando SVN/Git/CVS/ algo, ¿verdad?)

4

la propiedad Visible es una propiedad en el control - cuando se establece en falso el control no r ender en absoluto. Esto es mucho mejor que configurar display:none, en cuyo caso el control se representa con un estilo display:none, de modo que el navegador no lo muestre.

El display:none puede ser útil si no desea que el control sea visible, pero contiene algunos datos que desea utilizar en el cliente (a través de Javascript, por ejemplo). En tal caso, establecer la propiedad Visible en falso no funcionará.

+0

Gracias @Petar, sí, en caso de que queramos manipular el contenido a través de Javascript entonces deberíamos usar 'pantalla> none' de lo contrario * * no funcionará ** – Ismail

2

No puedo decir cuál es mejor, depende de la situación. Si desea usar ese control en el sitio del cliente (es decir, desea acceder al control mediante JavaScript), debe configurar la pantalla en ninguno. Pero si no lo necesita en el lado del cliente, es mejor configurar lo visible a falso.

Cuestiones relacionadas