首页 > 解决方案 > 在 ASP.NET Web 窗体中,客户端每 5 秒调用一次代码隐藏

问题描述

我正在创建一个显示实际天气状况的气象页面。为此,我需要每 5 秒更新一次标签。我不知道这是否可以通过 webforms 实现,因为我想在页面加载后更改它的值。我可以使用 page_LoadComplete 事件中的代码加载初始值,但是当我尝试循环它时,它不会更新标签文本。

谢谢

代码:

    public Wind Icarus = new Wind();

    public string degToCompass(double i)
    {...}

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        System.Timers.Timer aTimer = new System.Timers.Timer();
        aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        aTimer.Interval = 5000;
        aTimer.Enabled = true;
    }

    protected void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        string[] metingen = IcarusFTP.GetTXT();
        Icarus.Gust = Decimal.Parse(metingen[4], CultureInfo.InvariantCulture);
        Icarus.Speed = Decimal.Parse(metingen[6], CultureInfo.InvariantCulture);
        Icarus.Dir = Int32.Parse(metingen[7]);
        labelSpeed3.Text enter code here= Icarus.Speed.ToString();
        labelGust3.Text = "Gust: " + Icarus.Gust.ToString();
        labelDir3A.Text = degToCompass(Icarus.Dir);
        labelDir3B.Text = Icarus.Dir.ToString()+ "°";
    }
}

表格单元格内的 HTML:

<asp:label id="labelSpeed3" runat="server"></asp:label><br/>
<asp:label id="labelGust3" runat="server"></asp:label>

标签: asp.net

解决方案


这最好通过客户端的 AJAX 调用来处理。或者,如果您希望以 ASP.NET Webforms 方式完成 - 尝试在第二个参数中使用适当的 eventArgs 进行 __doPostBack() 调用。

不过,AJAX 将是要走的路。


推荐阅读