关于Visible=false和display的问题:none

本文关键字:问题 none display Visible false 关于 | 更新日期: 2023-09-27 18:04:08

如果我设置了某个控件的属性Visible="false",我将无法在aspx页面生成的HTML中看到该控件。但当我在该控件的样式标记中使用display:none时,我会看到该控件在HTML中变灰。为什么?

此外,如果我发现页面上不再需要一些控制:-

  1. 我应该把它从我的页面上注释掉吗
  2. 我应该将其属性设置为Visible=false吗?">
  3. 我应该设置显示:无吗

考虑到时间限制和页面的沉重,什么是最好的方法?

以下是我的测试页面生成的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>

关于Visible=false和display的问题:none

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

如果在某些情况下根本不想渲染控件,请设置Visible="false"。由于它将控件的HTML排除在页面之外,所以页面会稍微小一些——但如果您想通过Ajax等显示控件,这是行不通的。

如果您根本不想呈现控件,period,请不要注释掉它——完全删除它。所有控件,无论是否可见,仍然需要处理,因此如果您从未打算渲染控件,visible=false将浪费CPU(并可能导致副作用(。你真的不想有太多评论出来的东西到处飘;这只会使维护更加困难。如果您以后发现确实需要它,您可以随时从修订控制中取回它。(您正在使用SVN/Git/CVS/的东西,对吧?(

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

如果您不希望控件可见,display:none可能会很有用,但它包含一些您想在客户端上使用的数据(比如通过Javascript(。在这种情况下,将Visible属性设置为false将不起作用。

我不能说哪一个更好,这取决于情况。如果你想在客户端站点中使用该控件(即想通过JavaScript访问该控件(,你必须将显示设置为无。但如果客户端不需要它,最好将visible设置为false。

我认为重要的区别在于您是否需要访问面板内部的项目,即客户端。设置visible=false将导致面板无法呈现,因此您无法再次访问客户端的任何控件。然而,如果设置"不显示",则在面板渲染时,您将可以访问控件。关于visible=false的另一个问题是避免验证。