回发后 ASP.Net 子菜单不显示
本文关键字:菜单 显示 Net ASP | 更新日期: 2023-09-27 18:33:03
我在母版页中使用了 ASP.Net 菜单控件。 我使用更新面板包装主内容。 发生回发时,鼠标悬停时母版页中的子菜单不显示。 我需要再次单击菜单,然后将鼠标悬停在子菜单仅显示的菜单上。
母版页
<div class="float-right">
<nav>
<asp:Menu ID="mne" runat="server" Orientation="Horizontal" Font-Names="Arial, Verdana, Tahoma"
OnMenuItemClick="mne_MenuItemClick" StaticEnableDefaultPopOutImage="false" Width="510px"
DynamicHorizontalOffset="20" StaticSubMenuIndent="250px" TabIndex="1" >
<LevelMenuItemStyles>
<asp:MenuItemStyle CssClass="level1" HorizontalPadding="10px" />
</LevelMenuItemStyles>
<StaticMenuStyle />
<DynamicMenuStyle />
<StaticHoverStyle BackColor="Wheat" />
<DynamicHoverStyle BackColor="Gray" ForeColor="White" />
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"
Value="Home"></asp:MenuItem>
<asp:MenuItem Text="Management" Value="Management"
ToolTip="Management">
<asp:MenuItem Text="Edit" Value="Edit" ToolTip="Edit
NavigateUrl="~/Edit.aspx">
</asp:MenuItem>
</asp:MenuItem>
<asp:MenuItem Text="Logout" Value="Logout"></asp:MenuItem>
</Items>
</asp:Menu>
</nav>
</div>
</div>
</header>
编辑.aspx
<asp:DropDownList ID="Country" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Country_SelectedIndexChanged">
</asp:DropDownList>
下拉列表回发后,将鼠标悬停在菜单上,子菜单不显示。 我需要单击菜单,然后将鼠标悬停在子菜单上将显示。
出了什么问题吗? 请帮忙
我也断断续续地遇到这种情况,其他建议都不适合我。我最终决定删除服务器端代码的每一行,然后逐节取消删除它们,直到我发现导致它的原因。
事实证明,这是使用 ClientScript.RegisterStartupScript(...) 方法进行服务器端 JavaScript 注入的结果。在某些情况下,注入的 JavaScript 中引用的客户端对象在注入脚本时不可见。其他人暗示页面生命周期是此问题的根本原因,这将证明这一点。
一旦我发现了这一点,我就能够通过确保脚本在引用文档元素之前检查文档元素的可见性来轻松修复它。令人惊讶的是,尽管启用了JavaScript警告,但这并没有产生任何客户端错误。
禁用根菜单或父菜单的回发:
MenuItem mnu = new MenuItem();
// if mnu has sub item(s)
mnu.Selectable = false;
当应用程序由移动设备打开时,此选项更有用。