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

时间:2011-08-02 04:54:51

标签: c# asp.net html

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

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

  1. 我应该从我的页面上发表评论吗?
  2. 我应该设置其属性Visible = false“
  3. 我应该设置display:none?
  4. 记住时间限制和页面沉重的最佳方法是什么?

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

4 个答案:

答案 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以避免验证。