Asp.net 在UpdatePanel中提交后隐藏Div

Asp.net 在UpdatePanel中提交后隐藏Div,asp.net,ajax,webforms,updatepanel,Asp.net,Ajax,Webforms,Updatepanel,我在UpdatePanel中有一个div,当用户单击编辑链接时,会显示该div。要保存的提交按钮位于该分区内。现在,当用户单击“提交”按钮时,一切正常,但该分区自动隐藏!使用jQuery的show()更改客户端的可见性 为什么UpdatePanel会隐藏我的div,即使它是由我显示的?我试图设置runat='server'并启用viewstate,但得到了相同的结果 我如何告诉UpdatePanel将div`保留为提交之前的状态 下面是一个显示问题的小项目: <asp:ScriptMana

我在
UpdatePanel
中有一个
div
,当用户单击编辑链接时,会显示该div。要保存的提交按钮位于该分区内。现在,当用户单击“提交”按钮时,一切正常,但该分区自动隐藏!使用jQuery的
show()
更改客户端的可见性

为什么
UpdatePanel
会隐藏我的
div
,即使它是由我显示的?我试图设置
runat='server'
并启用viewstate,但得到了相同的结果

我如何告诉UpdatePanel
div`保留为提交之前的状态

下面是一个显示问题的小项目:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                <a href="#" id="edit-link">edit</a>
            </div>
            <div id="edit-div" style="display:none; border: 2px black solid;">
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

<script>
    $(document).ready(function(){
        $('#edit-link').on('click', function () {
            $('#edit-div').show();
        });
    });
</script>

此问题的最简单解决方案是:-

  • 不要使用jQuery显示
    编辑div
  • 使
    编辑div
    成为服务器控件
  • 转换为
    控件,并在其服务器端单击事件中显示编辑div
  • 问题是UpdatePanel正在按照页面的标记恢复原始状态
    edit div
    不是服务器控件,您通过客户端脚本显示它,UpdatePanel不知道这一点,并将始终返回原始标记

    在这些场景中,有一些方法可以让jQuery很好地使用UpdatePanel,但它比上面简单的解决方案更复杂

    希望有帮助

    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = DateTime.UtcNow.ToString();
    }