当前位置:  开发笔记 > 编程语言 > 正文

处理时更新ASP.NET标签

如何解决《处理时更新ASP.NET标签》经验,为你挑选了1个好方法。

我有一个按钮点击运行的方法,有4个标签.我需要做的是在每个代码块执行后更新标签.我尝试过线程,更新面板等,但似乎无法正常工作.我认为计时器可以正常工作,但只有当你不在方法中时它才会打勾.代码看起来像这样:

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

     //etc...
}

Joel Coehoor.. 5

您对asp.net的工作方式存在误解.您的服务器代码运行以响应浏览器对完整 html页面的请求.即使您真正想要的是运行一些按钮点击代码,也是如此.在整个页面必须从头反正重建,甚至在回发.这就是Web表单设计的方式.

只要页面呈现给浏览器,就会销毁该页面类的实例.在下一个回发中,您将再次从头开始,除了会话,视图状态和应用程序缓存之外的明显例外.甚至替换了浏览器中页面的先前DOM实例.

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

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

现在ajax可能会让事情变得复杂一些.使用ajax控件时,您可能不再更新整个页面,但概念仍然适用:发出一个请求,并接收一个响应并用于更新请求的整个上下文.如果你有很多javascript来处理ajax请求的结果,你可以进一步混淆.

不幸的是,您发布的代码没有快速修复.您需要考虑这是如何工作的,并决定您希望页面如何流动.



1> Joel Coehoor..:

您对asp.net的工作方式存在误解.您的服务器代码运行以响应浏览器对完整 html页面的请求.即使您真正想要的是运行一些按钮点击代码,也是如此.在整个页面必须从头反正重建,甚至在回发.这就是Web表单设计的方式.

只要页面呈现给浏览器,就会销毁该页面类的实例.在下一个回发中,您将再次从头开始,除了会话,视图状态和应用程序缓存之外的明显例外.甚至替换了浏览器中页面的先前DOM实例.

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

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

现在ajax可能会让事情变得复杂一些.使用ajax控件时,您可能不再更新整个页面,但概念仍然适用:发出一个请求,并接收一个响应并用于更新请求的整个上下文.如果你有很多javascript来处理ajax请求的结果,你可以进一步混淆.

不幸的是,您发布的代码没有快速修复.您需要考虑这是如何工作的,并决定您希望页面如何流动.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有