更新控件中的asp.net面板可见性

本文关键字:可见性 net asp 控件 更新 | 更新日期: 2023-09-27 18:28:19

我正在创建一个移动菜单样式的函数。

单击图像按钮,如果菜单当前未显示,则该按钮应显示菜单;如果菜单当前显示,则将其隐藏。

<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>

菜单点击事件:

if(hdfMenuStatus.Value == "menudown")
    {
        panMenuContainer.Visible = true;
        hdfMenuStatus.Value = "menuup";
    }
    else
    {
        panMenuContainer.Visible = false;
        hdfMenuStatus.Value = "menudown";
    }

这工作得非常好,但一旦我将菜单图标和菜单列表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>

仅仅为了显示或隐藏菜单而回发页面似乎完全不令人满意。

有人能提出解决这个问题的建议吗?我确信我以前在更新面板中使用过面板可见性。

更新控件中的asp.net面板可见性

当您将UpdatePanel更改为遵循时会发生什么

<form id="form1" runat="server">
    <ajaxToolkit:ToolkitScriptManager ID="tsm" runat="server"></ajaxToolkit:ToolkitScriptManager>
    <div>
        <asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
    </div>
    ....the rest of your code etc..

我想看看你的html标记的其余部分是什么样子的,但我只是在使用和不使用包含在表单标记中的<ajaxToolkit:ToolkitScriptManager>和UpdatePanel的情况下测试了它,它是有效的。。

您需要更改一些代码作为示例。

<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:PostBackTrigger ControlID="menubtn" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>