如何在 C# Web 表单应用程序的回发时保持侧导航栏隐藏?

Posted

技术标签:

【中文标题】如何在 C# Web 表单应用程序的回发时保持侧导航栏隐藏?【英文标题】:How to Keep Side Navigation Bar Hidden on Post Back in C# web forms application? 【发布时间】:2020-08-17 13:57:12 【问题描述】:

我有一个带有侧边导航栏的 C# webforms 应用程序,默认情况下会显示该导航栏,但是在单击切换按钮时它会被隐藏并在再次单击切换按钮时显示。

我的 site.master 页面中的 javascript

 $(document).ready(function () 
             if ($('#PanelState').attr('value') == 'false') 
                 $('#sidebar').addClass('hiddencol');
        

    $('#sidebarCollapse').on('click', function () 
        $('#sidebar').toggleClass('active');
        if ($('#sidebar').hasClass('active'))
         $('#PanelState').attr('value', true);
         
        else 
         $('#PanelState').attr('value', false);
        
    );   
    );

CSS

   #sidebar 
    min-width: 300px;
    max-width: 300px;
    height:100vh;
    background: #158CBA;
    color: white;
    transition: all 0.3s;


    #sidebar.active 
        margin-left: -300px;
    
.hiddencol 
    display: none;

aspx隐藏字段

<asp:hiddenfield id="PanelState" runat="server" value="true" ClientIDMode="static"   />

但每次回帖后侧边导航栏如果之前隐藏,则不会一直隐藏

【问题讨论】:

请看下面的答案。由于您的属性不是永久的,它会在回发后恢复到原来的值。将状态保存到页面的一部分,该部分将在回发后保留其值,例如隐藏字段。 ASP.Net 控件具有“视图状态”,这是在回发后保持值不变的原因。 【参考方案1】:

尝试使用隐藏字段:

<asp:HiddenField ID="SidebarState" runat="server" ClientIDMode="Static" />

【讨论】:

嗨,我尝试使用隐藏字段,但仍然得到相同的结果。我已通过更改更新了我的问题

以上是关于如何在 C# Web 表单应用程序的回发时保持侧导航栏隐藏?的主要内容,如果未能解决你的问题,请参考以下文章

回发时如何阻止用户界面?

回发时的 ASP.Net 复选框值错误?

在回发时保持页面内 div 的滚动位置

如何从 Jquery 对话框表单提交中调用父页面上的回发?

__DoPostback 在进行部分回发时回发禁用控件的值

如何避免在回发时从 asp.net 重复输入?