ASP.NET更新标签单独和异步

时间:2014-08-26 22:05:26

标签: c# asp.net asynchronous

好的,我可以使用计时器异步更新我的页面标签。问题是标签总是同时更新,而我希望每个标签按顺序更新。

这是我的aspx:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
 <asp:UpdatePanel runat="server" id="UpdatePanel1" 
  UpdateMode="Conditional">
  <contenttemplate>
     <asp:Timer id="Timer1" runat="server"
        Interval="5000" 
        OnTick="Timer1_Tick">
     </asp:Timer>
     <asp:Label ID="Label1" runat="server" >Label1</asp:Label>
     <asp:Label ID="Label2" runat="server" >Label2</asp:Label>
  </contenttemplate>
</asp:UpdatePanel>
</asp:Content>

我的代码隐藏:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;

public partial class _Default : Page
{

 public int counter = 0;

protected void Timer1_Tick(object sender, EventArgs e)
{
    counter++;
    System.Diagnostics.Debug.WriteLine("Counter: " + counter);
    if (counter == 1)
    {
        Label1.Text = "<font color='green'>Started</font>";
        UpdatePanel1.Update();

    }
    if (counter == 2)
    {
        Label2.Text = "<font color='green'>Started</font>";
        UpdatePanel1.Update();

    }

}
}

在尝试了几个例子后,我决定问这里,看看我是否遗漏了一些明显的东西。不知怎的,我的计数器变量被重置为0,这告诉我整个页面可能正在重新运行每个tick而不仅仅是Timer1_Tick方法。

1 个答案:

答案 0 :(得分:0)

counter == 1也增加counter的子句,因此在子句的末尾counter = 2,因此另一个条件也是如此。

不要在counter条款中增加counter == 1