如何正确隐藏/显示asp:面板中包含其他服务器控件

时间:2014-08-22 14:12:14

标签: css asp.net webforms

所以我正在处理ASP.NET Web Forms应用程序。我有:

`<asp:Panel ID="MyPanel" runat="server">'

在此面板中,我有其他控件,例如Repeaterstextboxes等,并且在(!IsPostBack)我通过这样做来确定是否显示整个面板的天气:

 if (theClient.CType == "1")
   {
     MyPanel.CssClass == "display-none"
   }

display-none的定义如下:

.display-none {
    display: none;
}

然而,在某些情况下,我想再次显示整个面板,因为我在(!IsPostBack)上设置了中继器和类似的东西,我想要设置所有这些。我不完全确定这些可见性属性是如何工作的,但我需要的是要呈现的HTML标记,要使用正确的数据初始化的控件,只是将其隐藏在页面上但仍然活跃。

因此,当满足显示面板的条件时,请记住这一点,我这样做:

 MyPanel.CssClass = string.Empty;

但是......没有任何反应。我不能完全确定,如果我正确删除了样式,如果这是我应该用于完成我需要的正确CSS样式。

那我怎么能这样做呢?

2 个答案:

答案 0 :(得分:0)

在aspx页面中:

<style type="text/css">
    .displayPanel
    {
        display:block;
    }

    .hidePanel
    {
        display:none;
    }
</style>

在代码背后:

if (condition)
{
    MyPanel.CssClass = "displayPanel";
}
else
{
    MyPanel.CssClass = "hidePanel";
}

答案 1 :(得分:0)

请注意,<asp:Panel>控件会以<div>呈现给客户端。因此,如果div中没有​​内容,则不会在客户端上显示。确保所有其他内容(如转发器和文本框等)可见性属性设置为true(默认值),以便在呈现页面时它们就在那里。此外,当您将asp元素可见性设置为false时,它实际上不会在页面上呈现。您将无法通过JavaScript或jQuery等访问这些元素。

如前所述,您可以使用(!IsPostBack)在服务器上执行任何处理后更改Visible = true / false。你应该真正使用CSS技巧的唯一一次是你需要客户端上的元素来处理一些jQuery或JavaScript。 你试过这个:

if(theClient.CType == "1")
{
   MyPanel.Visible == true;
}

当然,您需要将标记更改为:
<asp:Panel ID="MyPanel" runat="server" Visible=false ></asp:Panel>