使用 Ajax 计时器执行 ASP.nett 代码隐藏方法

Execute ASP.nett codebehind method with Ajax Timer

我试图让计时器在 5 秒后调用代码隐藏方法,但是当页面正在加载时我得到

方法 'Protected WithEvents timEndup As System.Web.UI.Timer' 没有与委托 'Delegate Sub EventHandler(Of System.EventArgs)(sender As Object, e As System.EventArgs)' 兼容的签名。

在我的页面上

<asp:ScriptManager runat="server" />
<asp:Timer runat="server" id="timEndup" interval="5000" ontick="timEndup" />

在代码隐藏中我有

Private Sub timEndup_Tick(sender As Object, e As System.EventArgs) Handles timEndup.Tick
    Stop
End Sub

签名对我来说是正确的,那么我做错了什么?

您已经通过以下代码关联到 EventHandler 您的 timEndup.Tick EventHandles timEndup.Tick

所以,只需在客户端删除 OnTick 属性, OnTick="timEndup" 必须删除

或删除:Handles timEndup.Tick 通过代码隐藏并在 OnTick 属性中 EventHandler Sub 的真实姓名作为 timEndup_Tick

所以代码变成:

客户端:

<asp:ScriptManager runat="server" />
<asp:Timer runat="server" ID="timEndup" Interval="5000"  OnTick="timEndup_Tick"  />

服务器端:

Protected Sub timEndup_Tick(sender As Object, e As EventArgs)
   Debug.WriteLine("Tick ")
End Sub

或:

客户端:

<asp:ScriptManager runat="server" />
<asp:Timer runat="server" ID="timEndup" Interval="5000" />

服务器端:

 Protected Sub timEndup_Tick(sender As Object, e As EventArgs) Handles timEndup.Tick
      Debug.WriteLine("Tick ")
 End Sub

另一件事是 EventHandler Sub 必须声明为 NOT Private