我有一个按钮点击运行的方法,有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请求的结果,你可以进一步混淆.
不幸的是,您发布的代码没有快速修复.您需要考虑这是如何工作的,并决定您希望页面如何流动.
您对asp.net的工作方式存在误解.您的服务器代码运行以响应浏览器对完整 html页面的请求.即使您真正想要的是运行一些按钮点击代码,也是如此.在整个页面必须从头反正重建,甚至在回发.这就是Web表单设计的方式.
只要页面呈现给浏览器,就会销毁该页面类的实例.在下一个回发中,您将再次从头开始,除了会话,视图状态和应用程序缓存之外的明显例外.甚至替换了浏览器中页面的先前DOM实例.
因此,当您设置标签的text属性时,您不会直接在浏览器中直接更新任何内容.您所做的只是更新页面类中的一些临时存储.作为执行服务器代码的最后一个阶段,所有这些临时变量都用于呈现已完成的html,并且响应最终被发送到浏览器并显示给用户.
这应该是足够的信息,让您了解代码为何不按预期运行.在您的任何属性更改进入浏览器之前,它正在运行方法中的所有代码.因此,用户唯一看到的是操作的最终状态.
现在ajax可能会让事情变得复杂一些.使用ajax控件时,您可能不再更新整个页面,但概念仍然适用:发出一个请求,并接收一个响应并用于更新请求的整个上下文.如果你有很多javascript来处理ajax请求的结果,你可以进一步混淆.
不幸的是,您发布的代码没有快速修复.您需要考虑这是如何工作的,并决定您希望页面如何流动.