C# 关于Visible=false和display的问题:无;

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

如果我设置了某个控件的属性Visible=“false”,我就无法在我的aspx页面生成的HTML中看到该控件。但是当我为该控件使用display:none-in-style标记时,我看到该控件在HTML中变灰了。为什么呢

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

  • 我应该从我的页面上把它注释掉吗
  • 是否应将其属性设置为Visible=false“
  • 是否应设置显示:无
  • 考虑到时间限制和页面的繁重,最好的方法是什么

    下面是我的测试页面生成的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>
    
    
    可见标签::
    可见标签
    
    标签上带有可视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
    ,否则它将无法工作