我有一个asp:Menu对象,可以从web.sitemap文件动态构建下拉样式菜单。菜单工作正常,直到从UpdatePanel中触发部分回发。
回发后,下拉功能不再有效(检查页面时,对象的html代码仍然可见)。第一级项目仍然可以点击,但那些子项目不会像他们应该那样扩展。
我发现这些较旧的帖子存在同样的问题,但他们并没有真正的解决方案。
ASP.Net submenu not show after postback
asp menu not working after partial postback
如何在部分回发后让我的菜单再次运行?
的Site.Master
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<asp:Menu ID="NavMenu" StaticMenuStyle-CssClass="nav navbar-nav" DynamicMenuStyle-CssClass="dropdown-menu" runat="server"
EnableViewState="false" RenderingMode="List"
StaticEnableDefaultPopOutImage="false"
IncludeStyleBlock="false" Orientation="Horizontal"
DataSourceID="SiteMapDataSource1" OnMenuItemDataBound="NavMenu_MenuItemDataBound" ></asp:Menu>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="navbar-text">Welcome <asp:label runat="server" id="FullName">User</asp:label></li>
<li><asp:Button ID="LogoutBtn" runat="server" OnClick="btnLogout_Click" CssClass="Logout-button" Text="Logout" /></li>
</ul>
</div>
任何包含更新面板的页面
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ListBox ID="ListBox1" runat="server" Rows="15" SelectionMode="Single" OnSelectedIndexChanged="SelectedIndexChanged" AutoPostBack="true"></asp:ListBox>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
答案 0 :(得分:1)
根据类似问题的答案提供建议(下面的链接) - 将ul
菜单结构包装在asp:UpdatePanel
中,解决了部分回发后菜单无法正确显示的问题。
不确定这是否真的是解决问题的最佳方法,但确实有效!
asp:Menu stops working after a different control performs partial AJAX postback