当ajax计时器(倒计时)显示0时,调用c#函数

Call c# function when ajax timer (countdown) shows 0

本文关键字:0时 调用 函数 显示 ajax 计时器 倒计时      更新时间:2023-09-26

我在简单的任务中遇到了大问题…在asp.net页面是多视图与两个视图,

在第一个视图中,我有ajax计时器,其计数秒从60到0。时间显示在标签上,在更新面板上。我想调用我的c#函数做一些事情,并在最后改变活动视图。

我该怎么做呢?

我试图检查Timer_tick事件,如果秒== 0,我调用函数,但它不起作用。我也试过Timer1。启用= false,但也不能正常工作。

我认为,我必须使用Javascript,但如何?我不知道在哪里,怎么……我还不懂Javascript。

这是我的Timer_Tick事件(标签上的时间显示正确)

  protected void Timer1_Tick(object sender, EventArgs e)
    {
        Test t = (Test)Session["SelectedTest"];
        if (t.Remaining.Minute == 0 && t.Remaining.Second == 0)
        {
            DoSomething();
        }
        else
        {
            t.Remaining= t.Remaining.AddSeconds(-1);
            Label7.Text = t.Remaining.ToLongTimeString();
        }
    }

和DoSomething()函数:

     public void DoSomething()
        {
// Doing a lot of things....
            MultiView1.ActiveViewIndex = 3;
        }

函数Dosomething工作正常,我也有按钮调用这个函数-它的工作,但我也想调用函数如果剩余的秒== 0.

是的,我试过了。调试后我知道,我的c#函数DoSomething()正在工作-但最后,视图没有改变。调用DoSomething()后,计时器再次滴答…

我找到了js函数:

function stopTimer()
{
      var timer = $find("<%=Timer1.ClientID%>")
     timer._stopTimer();
}

但我不知道,我该在哪里打电话。

编辑:我看到,我的函数DoSomething()被调用了很多次。如果Timer显示为0,则函数在每个tick

中都在调用

Edit2: Noob-solution:)

  1. 增加第二个定时器,设置Timer2。时间间隔= 9999999(或其他高)
  2. 在Timer1_Tick事件:

    t。Remaining = t.Remaining.AddSeconds(-1);Label7。

            if (t.Remaining.Minute == 0 && t.Remaining.Second == 1) Timer2.Interval = 1000;
    
  3. 调用Timer2_Tick中的c#函数

原因:如果Timer是UpdatePanel的触发器,你不能从Tick事件中调用c#函数

我知道,这是更好的解决方案(可能是JavaScript),但我的最后期限很快,所以我必须使用它