使用计时器更新ASP.Net Web应用程序中的标签

时间:2018-10-31 17:32:36

标签: asp.net vb.net timer

我的母版页上有一个标签,我希望每秒查看一次更新,并跟踪经过的秒数。我修改了我的问题,看到了一些进步,但是又遇到了一个新问题。

我已将代码重组为包括ASP:Timer,Trigger和AsyncPostBackTrigger(均包装在UpdatePanel中),但更新似乎只发生一次...默认标签文本出现,并更新为“ 1”,即使后端代码继续向上计数,它也保持这种状态。

后端:

Public intCounter As Integer = 0

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    getUserAccess()
    manageAccess()

End Sub

Protected Sub testTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles testTimer.Tick

    intCounter += 1
    lblTestTimer.Text = intCounter

End Sub

HTML:

        <div>
            <asp:Timer ID="testTimer" OnTick="testTimer_Tick" runat="server" Interval="1000"></asp:Timer>
        </div>
        <asp:UpdatePanel runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="testTimer" EventName="Tick"/>
            </Triggers>
            <ContentTemplate>
                <asp:Label ID="lblTestTimer" CssClass="ticketLabel" Text="Ticket Alert!" runat="server"></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>  

最终问题(已修复):我的时间间隔在每次加载页面时被重置,我将声明更改为Shared,一切都很好。谢谢@the_lotus的帮助!

1 个答案:

答案 0 :(得分:1)

您应该真正了解页面生命周期。服务器无法像这样连接到客户端。通常,计时器是使用javascript在客户端上完成的,然后调用服务器获取更新后的值。一切都不是在客户端上运行的Winform。

由于您使用的是UpdatePanel,因此可能可以使用asp:Timer在客户端上运行计时器。

您的变量也会在每次加载页面时重置。将值保存在会话中或使其共享。