Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET Web表单中,客户端每5秒调用一次代码隐藏_Asp.net - Fatal编程技术网

在ASP.NET Web表单中,客户端每5秒调用一次代码隐藏

在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

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

谢谢

代码:

表格单元格中的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将是一条出路

最简单的方法是使用
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"));
        }
    }
}