asp.net面板在Update Control中的可见性

时间:2015-12-28 15:34:41

标签: c# asp.net 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>
           <div class="menulist">
                <asp:Panel ID="panMenuContainer" runat="server">
                    <ul>
                        <li>
                            <a href="UserAuthentication">Login</a>
                        </li>
                    </ul>
                </asp:Panel>
            </div>

menubtn Click事件:

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放在Async Trigger之外,但是也没有。

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

有一个页面回发只是为了显示或隐藏菜单似乎完全不能令人满意。

有人可以建议可以解决这个问题吗?我确定我之前在更新面板中工作过Panel Visibility。

2 个答案:

答案 0 :(得分:0)

当您将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>和没有封装在form标签内的UpdatePanel的情况下对它进行了测试,并且它可以工作..

答案 1 :(得分:0)

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

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