asp.net - 在 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>
解决方案
这最好通过客户端的 AJAX 调用来处理。或者,如果您希望以 ASP.NET Webforms 方式完成 - 尝试在第二个参数中使用适当的 eventArgs 进行 __doPostBack() 调用。
不过,AJAX 将是要走的路。
推荐阅读
- java - 如何通过 .bat 文件将参数传递给另一个 Java 程序?
- javascript - 如何在 CSS 中改变元素旋转的速度
- c++ - 如何使用 -Werror= 使编译器为所有 -Wimplicit-int-conversion 警告抛出错误?
- c# - 当有很多记录时,C# MVC Controller ActionResult 查询需要很长时间才能加载
- r - 试图在ggplots中使用变量作为标签
- mysql - 如何使用子查询或派生表查询表?
- c++ - 如何在cmake项目中使用c++20
- apache - 如何使用 Apache 将子域主机转发到 proxypass?
- flutter - 当我更改下拉按钮时,它会影响下一个
- python - 从 unyt 包导入类时 PyCharm 找不到引用