如果我设置了一些控件的属性Visible =“false”,我无法在我的aspx页面生成的HTML中看到控件。但是当我在该控件的style标签中使用display:none时,我看到控件在HTML中显示为灰色。那是为什么?
此外,如果我在页面上找到一些不再需要的控件: -
记住时间限制和页面沉重的最佳方法是什么?
以下是我的测试页面生成的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>
答案 0 :(得分:9)
如果您想通过Ajax / etc动态显示或隐藏控件,或者控件包含您的页面所需的信息,请在CSS中设置display:none
。
如果您不想在某些情况下渲染控件,请设置Visible="false"
。由于它将控件的HTML保留在页面之外,因此会使页面略小 - 但如果要通过Ajax / etc显示控件,则无法正常工作。
如果您根本不想渲染控件,期间,请不要将其注释掉 - 完全删除它。所有可见或不可见的控件仍然需要处理,因此如果您从不打算渲染控件,则Visible = false会浪费CPU(并可能导致副作用)。你真的不希望有很多注释掉的东西漂浮在周围;它只是使维护更难。如果您以后发现需要,可以随时从修订控件中取回它。 (你 使用SVN / Git / CVS / 某事,对吗?)
答案 1 :(得分:5)
Visible
属性是控件上的属性 - 当设置为false时,控件根本不会呈现。这比设置display:none
要好得多,在这种情况下,控件以display:none
样式呈现,因此浏览器不会显示它。
如果您不希望控件可见,display:none
可能很有用,但它包含您想在客户端上使用的一些数据(比如通过Javascript)。在这种情况下,将Visible
属性设置为false将不起作用。
答案 2 :(得分:2)
我不能说哪一个更好,这取决于情况。如果要在客户端站点中使用该控件(即希望通过JavaScript访问该控件),则必须将显示设置为none。但是如果你在客户端不需要它,最好将visible设置为false。
答案 3 :(得分:0)
我认为重要的区别在于您是否需要访问客户端内部面板中的项目。设置visible = false将导致面板无法渲染,因此您无法再获得客户端的任何控件。而如果您设置了不显示,则在呈现面板时您将可以访问控件。还要考虑visible = false以避免验证。