小弟C#菜鸟,因为项目要用到ASP.NET编一个网页动态刷新后端C#代码采集到的硬件数据,现在硬件的数据已经采到了后端。问题是如何将数据传到前端并在网页上刷新。
起初我用了<%= %>的方法,但是只能加载后端的初始值,不能刷新。
后来,添加了Ajax拓展控件  ScriptManager、Updatepanel和Timer ,并在Updatepanel中添加了一个Textbox用于传数据,每隔10秒刷新一次。这样做虽然前端网页能观察到动态刷新了(手动在TextBox输入一个别的值,过10秒会刷新到原来的值),但还是初始值在一直刷新,就好像是加载页面的时候前端从后端拿了一次数据存到了前端的某个地方,然后一直在刷新这个数据一样。
费解,求问各位大神如何解决。这是设的初值!这是前端调用Ajax控件的代码这是后端向前端穿数据的代码(通过TextBox传送,Timer触发UpdatePanel)打开硬件和服务器传输数据后,后端C#显示数据已经更新但是前端一直显示的是初始值18

解决方案 »

  1.   

    每一次页面提交,都会初始化页面对象,lon 当然被赋值为 18。如果你不按照 web/asp.net 页面生命周期的知识来设计程序,那就不会有很正确很精简的流程。
      

  2.   

    假设你把所谓的 TextBox1.Text 的值(转为数字值)赋值给 lon,仅仅是“一瞬间”起一点作用,下一次asp.net 处理请求时页面对象实例中的 lon 也还是 18。不学 asp.net 页面生命周期而编写 asp.net 代码的人,连入门都不能入门。所以需要从一点原理开始学起。
      

  3.   

    感觉是你的netajax插件与百度地图的冲突了,对于这种用外部gis的,最好直接写ajax代码,而不是用ajax控件
      

  4.   

    谢谢   我在看生命周期了
    但是如果每次提交都初始化lon的话,那我处理完的lon岂不是永远都传不过去了
      

  5.   

    您好,刚才在后端程序的page_load中加断点查看了,果然一直都是18,求问怎样赋值才能上时间的把新值给前端呀
      

  6.   

    直接前端写一个ajax,每隔一段时间去后台取值不就行了
      

  7.   

    首先要明确一个问题,HTTP 协议只能是客户端请求、获取服务器端的数据。不存在服务端主动向客户端发送数据的,只能是响应客户端的请求。所以,你写在服务器端的定时器,是没有用的。因为服务器响应了第一次请求之后,已经完成任务了,以后非客户端再次请求,不能再发送数据。在你这个例子中,最简便的方法,是把定时器写在客户端,定时向服务器请求最新的数据。
      

  8.   

    定时器是在客户端的
    只是应该如何请求服务端的数据
    我查看了http响应,正常的10秒一次      
    只是传回来的值一直都是初始值
      

  9.   

    难道是请求的时机不对,一般用什么语句请求数据呀?   get?
      

  10.   

    对  我前端写了ajax    和定时器
     应该怎么取数据    用什么语句呀?
      

  11.   

    对  我前端写了ajax    和定时器
     应该怎么取数据    用什么语句呀?“取数据”没有什么问题(虽然你没有正确贴出来)。关键的基础知识是,asp.net 使用 ViewState 集合来保存页面持久化数据,并不是什么 static 变量。你为 static 变量 long 赋值,它无法在页面下一次被创建时自动恢复上一次所赋值的结果,而是重新初始化为 18。你用 ViewState["lon'] 则可以持久化地在页面实例之间保持状态值。
      

  12.   

    我只是提示你该如何学习、如何查找。真正的知识,请去查看那些到处都有的 asp.net 书籍资料。
      

  13.   

    并不是什么 static 变量。你为 static 变量 long 赋值  -->  并不是什么页面变量。你为页面变量 long 赋值