【问题标题】:asp.net Panel visibility in an Update Control更新控件中的 asp.net 面板可见性
【发布时间】: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>

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

谁能建议什么可以解决这个问题?我确定我之前在更新面板中使用过面板可见性。

【问题讨论】:

  • 查看我的更新我也没有在我的示例中使用这个 &lt;Triggers&gt; &lt;asp:AsyncPostBackTrigger ControlID="menubtn" EventName="Click" /&gt; &lt;/Triggers&gt; 因为 UpdatePanel 导致部分回发,我不确定你为什么需要触发异步回发也许你可以解释一下 \

标签: c# asp.net updatepanel


【解决方案1】:

当您将 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 标记的其余部分是什么样的,但我只是在有和没有 &lt;ajaxToolkit:ToolkitScriptManager&gt; 和包含在表单标签内的 UpdatePanel 的情况下对此进行了测试,它可以工作..

【讨论】:

  • 感谢您的建议 - 不幸的是,这并没有产生任何影响:仍然无法使用更新面板。
  • @Dave 您是否尝试过查看此链接asp.net/web-forms/overview/older-versions-getting-started/… 您可能忽略了一些实际上看起来您需要将更新面板包裹在&lt;div&gt; &lt;/div&gt; 周围
  • 我认为我们使用的是不同的版本:我的 Ajax Toolkit 没有脚本管理器 我使用的是标准的 asp:ScriptManager,但不幸的是它不起作用。
  • asp: ScriptManager 和 ajax ScriptManager 是两个不同的东西
  • 是的 - 我无法理解它,但我很高兴它正在工作!感谢您的帮助和建议。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 2011-07-10
    • 2010-10-15
    • 2010-10-08
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多