繁体   English   中英

在处理时更新ASP.NET标签

[英]Updating ASP.NET label while processing

我有一个方法,那就是在按钮单击时运行,带有4个标签。 我需要做的是在每个代码块执行之后更新标签。 我试过线程,updatepanels等,似乎无法使任何工作。 我以为计时器可以工作,但是只有当您不在方法内部时,它才会计时。 代码看起来像这样:

private void SomeMethod()
{
     label1.text = "Processing...";
     AnotherMethod();
     label1.text = "Done.";
     label2.text = "Processing...";
     AnotherAnotherMethod();
     label2.text = "Done.";

     //etc...
}

您对asp.net的工作方式有误解。 您的服务器代码将响应浏览器对完整 html页面的请求而运行。 即使您只想运行一些按钮单击代码,也是如此。 无论如何,即使是回发,也必须从头开始重建整个页面 这只是Web表单的设计方式。

页面呈现到浏览器后,页面类的该实例立即被销毁 在下一次回发中,您将从头开始,除了会话,视图状态和应用程序缓存的显着例外。 即使浏览器中页面的先前DOM实例也被替换。

因此,当您设置标签的text属性时,您不会直接在浏览器中直观地更新任何内容。 您要做的就是在页面类中更新一些临时存储。 作为执行服务器代码的最后阶段,所有这些临时变量都用于呈现完整的html,并且最终将响应发送到浏览器并显示给用户。

那应该是足够的信息,以使您了解代码为什么不按预期运行。 在您的任何属性更改进入浏览器之前,它将运行方法中的所有代码。 因此,用户唯一看到的就是操作的最终状态。

现在,ajax可以使事情复杂一些。 使用ajax控件时,您可能不再更新整个页面,但是该概念仍然适用:发出一个请求,并接收到一个响应并将其用于更新请求的整个上下文。 如果您有很多JavaScript来处理ajax请求的结果,则可以进一步弄乱事情。

不幸的是,您发布的代码没有快速解决方案。 您需要考虑一下它是如何工作的,并确定您希望页面如何流动。

您是否可以将3种方法公开给客户端脚本,然后从客户端代码依次调用它们,当method1完成时,客户端脚本将更新ui,然后调用method2,依此类推...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM