将UL设置为从代码隐藏不可见

时间:2009-12-08 21:05:49

标签: asp.net

这很奇怪。它必须是愚蠢的东西。

我的页面中有以下内容(位于我页面的用户控件中)

<div id="notifications" class="notificationsContainer" runat="server">
    <ul id="notificationsList" visible="false" runat="server"></ul>
</div>

在.ascx.cs的Page_Load中运行的最后一件事就是这行代码:

    if (!string.IsNullOrEmpty(notificationsList.InnerHtml))
        notificationsList.Visible = true;

它正在命令noticeList.Visible = true;但无论出于何种奇怪的原因,&lt; ul&gt;仍然不可见。我已经介入了这个,我没有看到任何其他代码冲突的原因等等。

以下是最后一次在Page_Load中调用的完整方法:

private void SetAndShowNotifications()
{
    notifications.Visible = false;

    SetItemRemovedNotification();

    if (!string.IsNullOrEmpty(notificationsList.InnerHtml))
        notificationsList.Visible = true;
}

我无法通过逐步了解为什么地狱不会坚持下去!

4 个答案:

答案 0 :(得分:1)

我认为您将div的Visible设置为false并尝试将其子元素的Visible设置为true ...

notifications.Visible = false;
...
if (!string.IsNullOrEmpty(notificationsList.InnerHtml))
   notificationsList.Visible = true;

尝试使用 notificationsList.Visible = false 替换 notifications.Visible = false

答案 1 :(得分:1)

您正在隐藏此行上的“通知”div:

notifications.Visible = false;

然后尝试显示“notificationsList”ul:

notificationsList.Visible = true;

只要“通知”div被隐藏,你的“notificationsList”是否可见并不重要,因为它是一个子元素。将if语句中的逻辑更改为:

if (!string.IsNullOrEmpty(notificationsList.InnerHtml))
{
    notifications.Visible = true;
    notificationsList.Visible = true;
}

答案 2 :(得分:0)

这取决于您在何处设置可见性。这是一个带有链接按钮的工作示例,该按钮在单击链接时显示ul

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script type="text/C#" runat="server">
    protected void ShowClick(object sender, EventArgs e)
    {
        notificationsList.Visible = true;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="notifications" class="notificationsContainer" runat="server">
        <ul id="notificationsList" visible="false" runat="server">Hello</ul>
    </div>    
    <asp:LinkButton ID="btnShow" runat="server" Text="Show" OnClick="ShowClick" />
    </form>
</body>
</html>

答案 3 :(得分:0)

您在页面生命周期中的哪个位置尝试运行此代码?您应该在OnPreRender中执行此操作,甚至是页面加载。此外,如果UL不工作,为什么不将它切换为不产生任何标记的占位符,并且你会得到相同的结果。