Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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:如何从服务器端更新客户端?_Asp.net - Fatal编程技术网

ASP.NET:如何从服务器端更新客户端?

ASP.NET:如何从服务器端更新客户端?,asp.net,Asp.net,我想在服务器端仍在执行函数时,从服务器端更新客户端上的标签。我怎样才能做到这一点 下面是代码片段: protected void Button1_Click(object sender, EventArgs e) { string Result = "Success"; if (Result == "Success") { Label1.Text = "Plan mst Com

我想在服务器端仍在执行函数时,从服务器端更新客户端上的标签。我怎样才能做到这一点

下面是代码片段:

protected void Button1_Click(object sender, EventArgs e)
        {
            string Result = "Success";
            if (Result == "Success")
            {
                Label1.Text = "Plan mst Completed";
                Thread.Sleep(2000);     //Some functionality here
                Label1.Text = "Packing date mst Started";
            }
            if (Result == "Success")
            {
                Label1.Text = "Packing date mst Completed";
                Thread.Sleep(2000);     //Some functionality here
                Label1.Text = "Etd mst Started";
            }

            if (Result == "Success")
            {

                Label1.Text = "Etd mst Completed";
                Thread.Sleep(2000);     //Some functionality here
                Label1.Text = "Inner box mst Started";

            }
        }
我希望label1.text中的所有更改都反映在客户端,而函数仍在执行中。
请帮忙

您是如何从浏览器调用此函数的。它是异步调用吗?然后您可以在客户端自己管理它。如果它是同步的,那么它将不可能,因为您对请求的响应仍在等待中

用这个

从内部与前端直接通信该方法将非常困难。我会这样做的

1) 将“计划mst”、“包装日期mst”、“Etd mst”和“内箱mst”拆分为4个单独的功能

2) 让页面上的按钮点击事件触发一个JavaScript函数,通过AJAX一个接一个地命中4个方法中的每一个。为每个函数创建一个新的ASPX页面(“InnerBox.ASPX”等)。如果您有jquery,它将如下所示:

        $("#SubmitButton").click(function () {
            DoPlanMst();
        });

        function DoPlanMst(argumentObj) {
            SetLabel("Plan MST Started");
            $.ajax({
                url: "PlanMst.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("Plan MST Completed");
                    DoPackingDateMst();
                }
            });
        }


        function DoPackingDateMst(argumentObj) {
            SetLabel("Packing Date MST Started");
            $.ajax({
                url: "PackingDate.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("Packing Date MST Completed");
                    DoEtdMst();
                }
            });
        }

        function DoEtdMst(argumentObj) {
            SetLabel("ETD MST Started");
            $.ajax({
                url: "EtdMst.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("ETD MST Completed");
                    DoInnerBoxMst();
                }
            });
        }

        function DoInnerBoxMst(argumentObj) {
            SetLabel("Inner Box MST Started");
            $.ajax({
                url: "InnerBoxMst.aspx",
                type: "POST",
                data: argumentObj, // your post params
                success: function () {
                    SetLabel("Inner Box MST Completed");
                }
            });
        }

        function SetLabel(message) {
            $("#Label1").val(message);
        }
如果你不想要4个9月ASPX页面,那很好。您可以将它们滚动到一个名为“ProcessMSTs.aspx”的文件中,该文件查找查询字符串param,以确定要调用的代码中的方法,同时仍传递POST参数。
编辑:修复了AJAX调用的success函数中函数名的输入错误。

下面是一个详细的问题,兄弟:在讨论了你的问题后,我理解了什么。有些人告诉你,在执行完成之前,你必须展示你的执行进度。为此,您可以使用调用,在调用到达服务器端之前,更新标签,甚至使用带有旋转图标的覆盖层覆盖页面,请求成功后,处理程序隐藏覆盖层或再次更新标签。使用此作为参考,您可以对每个操作使用不同的方法。然后,您可以更新第一个标签并执行javascript函数以立即发回服务器。因此,您可以
click()
一个隐藏按钮,并在服务器端处理它的click事件以执行下一个操作,依此类推。@Tim:嗯,我负担不起重新加载页面的费用,所以隐藏按钮是不可能的。AJAX在这种情况下有用吗?最简单的方法可能是使用AJAX请求轮询服务器。在这种情况下,您必须将服务器端操作的状态持久化到某个服务/页面方法可以访问的位置。