1

是否可以使用 asp.net 和 vb.net 作为背后的代码来更新 System.Timers.Timer elapsed 事件上的 UpdatePanel?我知道可以使用计时器控件,但请帮助我使用 Systems.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() 似乎没有做任何事情。再次感谢!

4

2 回答 2

1

UpdatePanel 仅适用于客户端到服务器。您描述的场景是不可能的(至少不是您使用的技术)。那是因为服务器真的没有办法连接到客户端。

有两种可能:

  • 要么从客户端到服务器(你丢弃了)
  • 如果您真的想从服务器端推送它,请使用像 SignalR 这样的框架。

SignalR 为您实现客户端和服务器端管道,并使用当前浏览器中可用的最佳技术。

在这里您可以找到有关 SignalR 的更多信息:http: //signalr.net/

于 2013-05-10T20:54:08.203 回答
0

而不是试图去服务器->客户端从客户端->服务器。

因此,在 javascript 中创建一个计时器,它将每 XXX 秒调用一次您的代码隐藏。

像这样的东西。

var myTimer = setInterval(myMethod, 5000);

function myMethod( )
{
  //this will repeat every 5 seconds
  //you can reset counter here
}

您可以通过调用清除计时器并停止它调用您的方法

clearInterval(myTimer);
于 2013-05-10T20:52:08.833 回答