网上天天有人问怎么在webform页面之间传值,基本上来说,大家熟悉的是   
  (1)url字符串传值   
  (2)session传值   
  (3)直接读取server.transfer过来的页面上的数据   
  前面2个就不说了,大家都知道怎么用,后面一个可能用的人比较少,这里做一下介绍。   
  Web   窗体页是应用程序中的类,因此可以向处理任何类一样为它们创建属性。但是,由于   Web   窗体页实际上仅在执行页的过程中存在,它们的生命周期非常短。因此,Web   窗体页上属性的用途相当有限,因为它们仅在处理页的过程中存在。但是,如果使用特定的技术将控件从一页传递到另一页,后一页仍可以访问前一页上的属性。   
  比如现在在一个webform页面上(page.aspx)放置了一个label,在   
  private   void   Page_Load(object   sender,   System.EventArgs   e)   
      {   
        this.Label1.Text="test";   
        }   
  我们设定了它的值,再为这个页面类设定一个公开的属性   
  public   Label   lab   
      {   
        get     
        {   
          return   Label1;   
        }   
      }   
  返回的就是这个页面上的一个Label   
  然后在这个页面上放置一个按钮,按钮的click事件中添加如下代码   
  Server.Transfer("newpage.aspx");   
  在newpage.aspx中同样放置一个Label标签,用来显示前一个页面那个Label的值,然后在Page_Load里面加上如下代码   
  if   (!IsPostBack)   
  {   
  page   p=(page)Context.Handler;   
  this.Label1.Text="传过来的值是:"+p.lab.Text;   
  }   
    
  我们运行这个程序,点击按钮,发现出现值传过来了,但是浏览器的url显示的还是原来的page.aspx,说明server.transfer是不改变 浏览器的url的,其实这说明此事件仅仅是在服务器端完成,并没有到客户端,这也就是为什么能在无状态的http下得到前面一个页面的数据的原因,如果你 换成response.redirect,你是不能得到任何东西的。分析一下上面的代码newpage   p=(newpage)Context.Handler的意思就是创建源页类的实例变量,然后可以向其分配   HTTP   对象(IHttpHandler类的一个实例),即接收初始请求的对象。这样传值的好处在于不像session一样使用内存,特别适合大数据的情况(其实 这不能称传值),坏处只能是同一个服务器页面之间,而且url并没有改变,用户看了可能会糊涂。   
    
  对程序你可以进一步改进,我们现在传的是一个Label的实例,你可以在页面间传递所有对象,甚至你可以直接使用前面一个页面的DataGrid!

最新文章

  1. javascript 转盘抽奖代码和计数器代码
  2. boost.asio与boost.log同时使用导致socket不能正常收发数据
  3. iOS游戏截图或广告图尺寸要求
  4. iOS - CAEmitterLayer流星
  5. Windows 8.1 应用再出发 - 视图状态的更新
  6. Linux-eth0 eth0:1 和eth0.1关系、ifconfig以及虚拟IP实现介绍
  7. [运维-服务器 – 2A] – nginx下绑定域名
  8. SOP、DIP、PLCC、TQFP、PQFP、TSOP、BGA封装解释
  9. Java数据类型(一)
  10. 用script实现内容显示,并使用json传输数据
  11. OC基础1:一些基本概念
  12. 【MongoDB】学习MongoDB推荐三本书
  13. H3C TE BGP拓扑排错报告
  14. 《写给大家看的设计书(第3版)》【PDF】下载
  15. Ubuntu环境下Anaconda安装TensorFlow并配置Jupyter远程访问
  16. Winform .NET 利用NPOI导出大数据量的Excel
  17. yum源配置
  18. php测试mysql数据库连通性并且在浏览器每一秒输出一次结果
  19. SpringMVC统一转换null值为空字符串的方法 !
  20. python+selenium初学者常见问题处理

热门文章

  1. VUE:页面跳转时传递参数,及参数获取
  2. 使用rxjs以及javascript解决前端的防抖和节流
  3. PHP重命名文件夹下的文件后缀名
  4. 在flask中使用sqlalchemy插入数据返回新增的id
  5. java 操作实例
  6. AGC038
  7. LOJ2257 SNOI2017 遗失的答案 容斥、高维前缀和
  8. java变量的声明和数据类型
  9. 一次golang应用的docker部署经历
  10. java 基础 四种权限修饰符