【发布时间】:2015-12-28 15:34:41
【问题描述】:
我正在创建一个移动菜单样式功能。
单击图像按钮,如果当前未显示菜单,则应显示菜单,如果当前显示菜单,则将其隐藏。
<div class="menuicon">
<asp:ImageButton ID="menubtn" ImageUrl="~/assets/menu.png" OnClick="menubtn_Click" runat="server" />
<asp:HiddenField ID="hdfMenuStatus" runat="server" Value="menudown" />
</div>
<div class="menulist">
<asp:Panel ID="panMenuContainer" runat="server">
<ul>
<li>
<a href="UserAuthentication">Login</a>
</li>
</ul>
</asp:Panel>
</div>
menubtn 点击事件:
if(hdfMenuStatus.Value == "menudown")
{
panMenuContainer.Visible = true;
hdfMenuStatus.Value = "menuup";
}
else
{
panMenuContainer.Visible = false;
hdfMenuStatus.Value = "menudown";
}
这绝对没问题,但是一旦我将 menuicon 和 menulist div 包含在更新面板中,它就会停止工作:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div class="menuicon">
<asp:ImageButton ID="menubtn" ImageUrl="~/assets/menu.png" OnClick="menubtn_Click" runat="server" />
<asp:HiddenField ID="hdfMenuStatus" runat="server" Value="menudown" />
</div>
<div class="menulist">
<asp:Panel ID="panMenuContainer" runat="server">
<ul>
<li>
<a href="UserAuthentication">Login</a>
</li>
</ul>
</asp:Panel>
</div>
</ContentTemplate>
</asp:UpdatePanel>
我还使用异步触发器将 menubtn 放在更新面板之外,但这也不起作用。
<div class="menuicon">
<asp:ImageButton ID="menubtn" ImageUrl="~/assets/menu.png" OnClick="menubtn_Click" runat="server" />
<asp:HiddenField ID="hdfMenuStatus" runat="server" Value="menudown" />
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div class="menulist">
<asp:Panel ID="panMenuContainer" runat="server">
<ul>
<li>
<a href="UserAuthentication">Login</a>
</li>
</ul>
</asp:Panel>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="menubtn" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
仅仅为了显示或隐藏菜单而进行页面回发似乎完全不能令人满意。
谁能建议什么可以解决这个问题?我确定我之前在更新面板中使用过面板可见性。
【问题讨论】:
-
查看我的更新我也没有在我的示例中使用这个
<Triggers> <asp:AsyncPostBackTrigger ControlID="menubtn" EventName="Click" /> </Triggers>因为 UpdatePanel 导致部分回发,我不确定你为什么需要触发异步回发也许你可以解释一下 \
标签: c# asp.net updatepanel