我正在构建一个Web应用程序,该应用程序的“信息栏”跨越Web应用程序的整个宽度。它位于DEFAULT.aspx页面中,因为我希望此信息栏位于顶部并始终显示,无论最终用户将在Web应用程序中位于何处。此信息栏将显示更新,状态以及未显示的内容。
它通过读取数据库中的表,提取消息和样式(红色,黄色,绿色背景)来工作。当没有要报告的内容时,它消失。以下是其外观示例。
在大多数情况下,这一切都很好!我通过UI更新表格。我的问题是这个。我希望信息栏更新而最终用户不点击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键,将显示更新的消息。
我该怎么办才能强制进行update \ refresh以使信息栏自行更新?我愿意就如何实现这一点提出其他建议。
谢谢!
答案 0 :(得分:0)
有几种方法可以做到这一点,一种方法是在客户端使用javascript
并每隔xx秒使用setInterval
进行一次ajax
调用并获取新的通知,使用更新的技术,您可以研究SignalR
,以便您的服务器可以将邮件,文档(https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/introduction-to-signalr)推送到客户端