ASP.NET 页面之间传递值。

看到网上面试题。很多答案都是误人子弟。

ASP.NET跨页传递值的问题,其实是一个状态管理的问题。原因就是因为HTTP是无状态连接的协议。因此在WEB开发中跨页传递与WINDOWS有本质的区别。

首先我们要确定,页面之间传递值是只在同一客户端中不同的页面传递。我们假设有页面A,B,A要传递一个值X给B.

关键问题是X保存在哪里的问题。分析一下无非保存在四个地方:

1.服务器的内存中 

2.服务器的硬盘中。

3.客户端的内存中。

4.客户端的硬盘中。

第一种:服务器的内存中。ASP.NET本身提供了很多种方法

1.读取Session对象。

2.读取Application对象。

3.用?***,取QueryString对象。

4.读取Cache对象。

5.使用Transfer,然后在B页面中使用this.Context.Handler或PreviousPage获取A页面的内容。

6.A页面中的按钮的PostBackUrl属性指定为B页面,则B页面可以通过PreviousPage对象的findcontrol方法获取页面控件中的值。使用@PreviousPageType指令。在B页面中指定A页面为前一个页面。则可以通过直接引用PreviousPage.controlname

7.A页面的Form中的Action属性指定为B页面,则B页面可以通过Form对象获取页面控件的值。

除此以外,只要保证A页面能够写入,B页面能够读取(根据X的唯一名称)的方法都是可行的。绝对不局限于以上的方法。比如我另外运行一个WebService,实现一个字典。A写入X,B调用X.都是可以的。甚至该服务器跟IIS运行的服务器不是同一台机器都没有关系。

第二种:服务器的硬盘中。比如A把X写入数据库,或者文本文件。然后B再读取出来。

ASP.NET2.0中的会话状态管理本身支持两种持久化会话状态:stateServer和sql server模式。

第三种:客户端的内存中。目前浏览器客户端脚本语言还不允许直接对内存进行操作。可以开发一个插件,使用插件读取客户端内存。

第四种:客户端的硬盘中。最常用的是使用cookie。当然如果有文件读写权限的话。也可以写到客户端文件中或数据库中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值