这很奇怪。它必须是愚蠢的东西。
我的页面中有以下内容(位于我页面的用户控件中)
<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;
}
我无法通过逐步了解为什么地狱不会坚持下去!
答案 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不工作,为什么不将它切换为不产生任何标记的占位符,并且你会得到相同的结果。