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

时间:2012-10-04 11:44:11

标签: asp.net

我希望从服务器端更新客户端上的标签,而该功能仍在服务器端执行。我怎样才能做到这一点?

以下是代码段:

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中的所有更改都反映在客户端,而功能仍在执行中。 请帮忙!!!

2 个答案:

答案 0 :(得分:1)

从该方法内部直接与前端通信将很困难。我就是这样做的。

1)将“计划mst”,“包装日期mst”,“Etd mst”和“Inner box mst”拆分为4个单独的功能。

2)让页面上的按钮点击事件触发JavaScript函数,通过AJAX一个接一个地点击4​​种方法中的每一种。为每个函数(“InnerBox.aspx”等)组成一个新的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个sep ASPX页面,那很好。您可以将它们滚动到名为“ProcessMSTs.aspx”的单个文件中,该文件查找查询字符串参数以确定其后面的代码中的方法以进行调用,同时仍然传递POST参数。 编辑:在AJAX调用的成功函数中修复了函数名中的拼写错误。

答案 1 :(得分:0)

你是如何从浏览器调用这个函数的。这是一个异步调用,那么你可以在客户端管理它自己。如果它是同步的,那么你将无法对你的请求作出回应。

使用它 Jquery Ajax post animation during ajax process?