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请求轮询服务器。在这种情况下,您必须将服务器端操作的状态持久化到某个服务/页面方法可以访问的位置。