在ASP.NET Web表单中,客户端每5秒调用一次代码隐藏
我正在创建一个meteo页面,其中显示实际的天气状况。 为此,我需要一个标签每5秒更新一次。我不知道这在webforms中是否可行,因为我想在页面加载后更改它的值。我可以用page_LoadComplete事件中的代码加载初始值,但是当我尝试循环它时,它不会更新标签文本 谢谢 代码: 表格单元格中的HTML:在ASP.NET Web表单中,客户端每5秒调用一次代码隐藏,asp.net,Asp.net,我正在创建一个meteo页面,其中显示实际的天气状况。 为此,我需要一个标签每5秒更新一次。我不知道这在webforms中是否可行,因为我想在页面加载后更改它的值。我可以用page_LoadComplete事件中的代码加载初始值,但是当我尝试循环它时,它不会更新标签文本 谢谢 代码: 表格单元格中的HTML: <asp:label id="labelSpeed3" runat="server"></asp:label><br/> <asp:label i
<asp:label id="labelSpeed3" runat="server"></asp:label><br/>
<asp:label id="labelGust3" runat="server"></asp:label>
这最好通过客户端的AJAX调用来处理。或者,如果希望以ASP.NET Webforms的方式完成,请尝试在第二个参数中使用适当的eventArgs调用_doPostBack()
不过,AJAX将是一条出路 最简单的方法是使用
Ajax
(不是ASP.NET Ajax)并从代码隐藏处调用WebMethod
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Sample.aspx.cs"
Inherits="AspNetWebForm.Sample" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<br />
<asp:Label runat="server" ID="CurrentDateLabel" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
setInterval(function getData() {
$.ajax({
type: "POST",
url: '<%= ResolveUrl("~/Sample.aspx/GetCurrentDate") %>',
contentType: "application/json",
success: function (msg) {
$("#<%= CurrentDateLabel.ClientID %>").text(msg.d);
}
});
}, 5000); // Post back to server via Ajax every 5 secs
</script>
</form>
</body>
</html>
如果您希望服务器定期向客户机推送更新,那么听起来您正在寻找的工具是signar.Works(信号器),它的功能非常强大。谢谢你的帮助。现在我甚至可以通过ajax返回一个数组。我现在可以在一次调用中发送所有值。正是我想要的!
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Sample.aspx.cs"
Inherits="AspNetWebForm.Sample" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<br />
<asp:Label runat="server" ID="CurrentDateLabel" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
setInterval(function getData() {
$.ajax({
type: "POST",
url: '<%= ResolveUrl("~/Sample.aspx/GetCurrentDate") %>',
contentType: "application/json",
success: function (msg) {
$("#<%= CurrentDateLabel.ClientID %>").text(msg.d);
}
});
}, 5000); // Post back to server via Ajax every 5 secs
</script>
</form>
</body>
</html>
using System;
using System.Web.Script.Serialization;
using System.Web.Services;
namespace AspNetWebForm
{
public partial class Sample : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Initialize date if you want to
CurrentDateLabel.Text = DateTime.Now.ToString("hh-mm-ss");
}
}
[WebMethod]
public static string GetCurrentDate()
{
return new JavaScriptSerializer().Serialize(DateTime.Now.ToString("hh-mm-ss"));
}
}
}