是可能的,使用asp.net和vb.net作为背后的代码,更新一个UpdatePanel上的System.Timers.Timer经过的事件?我知道定时器控制是可用的,但是请帮我用system . timer . timer -我有理由这样使用它。
每次处理计时器流逝事件的子例程被调用时,我都有一个文本,我更新它的文本。在我更新文本之后,我调用UpdatePanel上的update()。什么也不会发生。我知道有很多方法可以在客户端使用Javascript做到这一点,但如果可能的话,我想远离它并留在服务器端,我觉得Ajax UpdatePanel正试图为我做什么。我觉得UpdatePanel应该做我所需要的,更新我的页面的一小部分,在这种情况下,我的文字是存储的。提前谢谢你。
这是我的部分标记:
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Literal ID="timerLit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
这里是vb:
Protected Sub onTimerElapsed(source As Object, e As ElapsedEventArgs)
timerLit.Text = "Hello"
UpdatePanel1.update()
End Sub
我已经尝试了很多事情。我知道我的onTimerElapsed子例程被调用,并且我知道字面量被正确的文本填充。update()似乎没有做任何事情。再次感谢!
UpdatePanel只在客户端到服务器端工作。您所描述的场景是不可能的(至少您使用的技术是不可能的)。这是因为服务器确实没有办法连接到客户端。
有两种可能:
- 从客户端到服务器(你已经放弃了)
- 如果你真的想从服务器端推送它,可以使用SignalR这样的框架。
SignalR为您实现了客户端和服务器端管道,并使用了当前浏览器中可用的最佳技术。
您可以在这里找到有关SignalR的更多信息:http://signalr.net/
与其尝试从Server -> Client,不如从Client -> Server。
所以在javascript中创建一个计时器,每隔XXX秒调用你的代码。
就像这样。
var myTimer = setInterval(myMethod, 5000);
function myMethod( )
{
//this will repeat every 5 seconds
//you can reset counter here
}
你可以通过调用
来清除计时器并停止它调用你的方法clearInterval(myTimer);