有关Visible = false和display:none的问题;

Inf*_*ity 7 html c# asp.net

如果我设置一些控件的属性Visible ="false",我无法在我的aspx页面生成的HTML中看到控件.但是当我在该控件的style标签中使用display:none时,我看到控件在HTML中显示为灰色.这是为什么?

另外,如果我在页面上找到一些不再需要的控件: -

  1. 我应该从我的页面中评论出来吗?
  2. 我应该设置其属性Visible = false"
  3. 我应该设置display:none吗?

什么是最好的方法,记住时间限制和页面的沉重?

以下是我的测试页面生成的HTML: -

<!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>
Run Code Online (Sandbox Code Playgroud)

cHa*_*Hao 10

如果要通过Ajax/etc动态显示或隐藏控件,或者控件包含页面需要的信息,请display:none在CSS中设置.

如果您在某些情况下根本不想渲染控件,请进行设置Visible="false".由于它将控件的HTML保持在页面之外,因此会使页面略小 - 但如果要通过Ajax/etc显示控件,则无法使用.

如果你不想使控制可言,期限,就不做评论了出来-完全删除.所有可见或不可见的控件仍然需要处理,因此如果您从不打算渲染控件,则Visible = false会浪费CPU(并可能导致副作用).你真的不希望有很多注释掉的东西漂浮在周围; 它只是使维护更难.如果您以后发现需要,可以随时从修订控件中取回它.(你正在使用SVN/Git/CVS/东西,对吧?)


Pet*_*nov 5

Visible属性是控件上的属性 - 当设置为false时,控件根本不会呈现.这比设置要好得多display:none,在这种情况下,控件是使用display:none样式呈现的,因此浏览器不会显示它.

display:none可能是有用的,如果你不希望控件是可见的,但它包含要在客户端上使用的一些数据(通过JavaScript,说).在这种情况下,将Visible属性设置为false将不起作用.