C# 关于Visible=false和display的问题:无;
如果我设置了某个控件的属性Visible=“false”,我就无法在我的aspx页面生成的HTML中看到该控件。但是当我为该控件使用display:none-in-style标记时,我看到该控件在HTML中变灰了。为什么呢 此外,如果我发现页面上不再需要某些控件:-C# 关于Visible=false和display的问题:无;,c#,asp.net,html,C#,Asp.net,Html,如果我设置了某个控件的属性Visible=“false”,我就无法在我的aspx页面生成的HTML中看到该控件。但是当我为该控件使用display:none-in-style标记时,我看到该控件在HTML中变灰了。为什么呢 此外,如果我发现页面上不再需要某些控件:- 我应该从我的页面上把它注释掉吗 是否应将其属性设置为Visible=false“ 是否应设置显示:无 考虑到时间限制和页面的繁重,最好的方法是什么 下面是我的测试页面生成的HTML:- <!DOCTYPE HTML PUBLI
<!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>
可见标签::
可见标签
标签上带有可视FalseonaSpx::
labelwithdisplaynoneonaspx::
labelwithdisplaynoneonaspx
服务器端带有VisibleFalse的标签::
服务器端的LabelWithDisplayNone::
LabelWithDisplayNone服务器端
控件上的Visible
属性-设置为false时,控件根本不会呈现。这比设置display:none
要好得多,在这种情况下,控件以display:none
样式呈现,以便浏览器不会显示它
如果您不希望控件可见,但它包含一些您希望在客户机上使用的数据(比如通过Javascript),则显示:none
可能很有用。在这种情况下,将Visible
属性设置为false将不起作用。我不能说哪一个更好,这取决于具体情况。如果您希望在客户端站点中使用该控件(即希望通过JavaScript访问该控件),您必须将显示设置为无。但是,如果客户端不需要它,最好将可见设置为false。如果要通过Ajax/etc动态显示或隐藏控件,或者控件包含页面所需的信息,请在CSS中设置显示:无
如果您在某些情况下根本不想呈现控件,请设置Visible=“false”
。因为它可以将控件的HTML保留在页面之外,因此可以生成更小的页面——但是如果您想通过Ajax/等显示控件,这将不起作用
如果您根本不想呈现控件,句号,不要注释掉它--完全删除它。所有控件,无论是否可见,都需要处理,因此visible=false会浪费CPU(并可能导致副作用)如果你不打算呈现控件。而且你真的不想有太多被注释掉的东西四处游荡;这只会让维护变得更困难。如果你以后发现确实需要它,你可以随时从修订控件中取回它。(你使用的是SVN/Git/CVS/什么的,对吗?)我认为重要的区别在于您是否需要访问面板内部的项目,客户端。设置visible=false将导致面板无法呈现,因此您无法再次访问任何控件,客户端。而如果设置display none,则在呈现面板时,您将可以访问控件。关于visible=false的另一个问题是避免验证。谢谢@Petar,是的,如果我们想通过Javascript操作内容,那么我们应该使用display>none
,否则它将无法工作