我的母版页上有一个标签,我希望每秒查看一次更新,并跟踪经过的秒数。我修改了我的问题,看到了一些进步,但是又遇到了一个新问题。
我已将代码重组为包括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的帮助!
答案 0 :(得分:1)
您应该真正了解页面生命周期。服务器无法像这样连接到客户端。通常,计时器是使用javascript在客户端上完成的,然后调用服务器获取更新后的值。一切都不是在客户端上运行的Winform。
由于您使用的是UpdatePanel,因此可能可以使用asp:Timer在客户端上运行计时器。
您的变量也会在每次加载页面时重置。将值保存在会话中或使其共享。