Div / label \ Span在计时器事件完成触发后消失

问题描述 投票:0回答:1

我正在构建一个具有“信息栏”的webapp,它跨越webapp的整个宽度。它位于DEFAULT.aspx页面中,因为我希望这个信息栏位于顶部并随时显示,无论最终用户在webapp中的哪个位置。这个信息栏将显示更新,状态和什么不是。 它的工作原理是读取数据库中的表格,拉出消息和样式(红色,黄色,绿色背景)。什么都没有报告,它就会消失。下面是它的样子。

Sample infobar screenshot

在大多数情况下,这一切都很棒!我通过UI更新表。我的问题是这个。我希望infobar能够在没有最终用户点击F5的情况下进行更新(这会激活代码来提取数据)。因此,如果我更新表,那么每5分钟(或其他)运行一次的计时器会查看表中是否有值。如果是这样,抓住它并将其发布到屏幕上。更新仅在最终用户点击F5时有效。以下是我的HTML代码:

 <div>
          <asp:UpdatePanel ID="uppInfoBar" runat="server">
              <ContentTemplate>
                <asp:Timer id="tmrInfoBar" runat="server" Interval="30000" OnTick="tmrInfoBar_Tick" Enabled="true" />
                <asp:Label runat="server" id="lblinfoBar" Visible="true"  >
                    <div class="info-bar" >
                        <div class="info-bar__wrapper">
                            <i data-info-bar="icon"></i>
                            <span id="spnInfoBar" runat="server" data-info-bar="text"></span>
                            <asp:HiddenField ID="hdf_Test" runat="server"/>
                        </div>
                    </div>
                </asp:Label>
              </ContentTemplate>
          </asp:UpdatePanel>    
      </div>

当我单步执行C#代码时,所有值都被正确拉出,但是在我的C#代码中的最后一个“}”之后的下一步,信息栏消失了。没有参数可以在项目的任何位置关闭它。如果我注释掉计时器,运行它,用新消息更新表,点击F5,更新的消息显示出来。

我该怎么做才能强制更新\刷新以使信息栏自行更新?我对其他如何实施的建议持开放态度。

谢谢!

javascript c# html asp.net
1个回答
0
投票

有几种方法可以实现这一点,一种方法是在客户端使用javascript并使用setInterval每隔xx秒执行一次ajax调用并获取任何新通知,使用更新的技术,您可以查看SignalR以便您的服务器可以将消息推送到客户端,文档(https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/introduction-to-signalr

© www.soinside.com 2019 - 2024. All rights reserved.