asp.net页面间数据传递方法详解

发布时间:2020-04-24编辑:脚本学堂
本文介绍了asp.net页面间数据传递的方法,asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,需要的朋友参考下。
asp.net页面间数据传递方法详解 第二部分
  1.6 使用session 变量
  session 对象可以用来存储需要维护的指定对话的信息,不同的客户端生成不同的session 对象。session 用于存储特定于单独会话的短期信息。session 的使用方法和格式与application 相同。

  优点:易于实现,并且提供较高的安全性和持久性,可以应对iis 重启和辅助进程重启,可在多进程中使用。缺点是耗用服务器端的内存。所以不要存储大量的信息。session 最常见的用途是与cookie 一起向web 应用程序提供用户标识功能,session也可用于不支持cookie 的浏览器。但是,使用无cookie 的session 需要将会话标识符放置在查询字符串中,同样会遇到本文在查询字符串一节中陈述的安全问题。

  1.7 使用类的静态属性
  这种方法是利用类的静态属性实现两个页面间的值传。定义一个包含静态属性的类;将要传送的值赋给静态属性;目标页面中可以通过静态属性获得源页面中要传的值。
  优点是可以方便传送多个数据,缺点是需要额外编程,增加程序设计的工作量,占用服务器内存。

  1.8 使用server.transfer
  通过server.transfer 方法把执行流程从当前的aspx 文件转到同一服务器上的另一个aspx 页面的同时,可保留表单数据或查询字符串,做法是把该方法的第二个参数设置成true,在第一个页面用server.transfer("目标页面名.aspx",true);目标页面取出数据用:ruquest.form["控件名称"]或ruquest.querystring["控件名称"]。

    asp.net2.0 中还可以这样来用,代码如下:
 

复制代码 代码示例:
 previouspage pg1;
  pg1=(previouspage)context.handler;
  response.write(pg1.name);
 

  说明: 此段代码用在目标页面中取出传递的值,previous- page 是原页面的类名,name 是在原页面定义的属性, 需要传递 的数据存入到此属性中。
  使用这种方法, 需要写一些代码以创建一些属性以便可以 在另一个页面访问它, 可以在另一个页面以对象属性的方式来 存取数值,这个方法在页面间值传递中是特别有用的,这种方法 不但简洁,同时又是面向对象的。

  1.9 cache
  cache 具有强大的数据操作功能, 以键值对集合的形式存 储数据,可以通过指定关键字来插入和检索数据项。它的基于依 赖性的终止功能, 使它能够精确控制如何并及时更新和消除缓 存中的数据。它可以内部进行锁定管理,不需要象application 对象那样使用lock()和unlock()方法进行串行化管理。缺点是使用 方法较复杂,使用不当反而降低性能.

  2、不同页面跳转情况下可采用的传值方法 (www.jb200.com 脚本学堂)
  2.1 情况一:源页面可以跳转到目标页面,源页面传递数据给目标页面
  使用查询字符串, 将少量信息从一页传输到另一页以及不 存在安全性问题时,是一个简单常用的方法;使用server.transfer方法,可传递表单数据或查询字符串到另一个页面,还可以 保存初始页的httpcontext, 当目标页和源页面在同一个服务器 时,可以用此方法。

  2.2 情况二:页面传递数值给自身页面
  即在对同一页的多个请求间保留值, viewstate 属性可提供具有基本安全性的功能。也可用隐藏域,存储少量回发到自身或另一页的页信息时使用,不考虑安全性问题时使用。
  2.3 情况三:源页面传递数值给目标页面,而源页面不能直接连接到目标页面。

  有多个方法,具体用哪个要看具体情况。
  application: 存储由多个用户使用且更改不频繁的全局信息,此时安全性不成为问题。不要存储大量的信息。session:存储特定于单独会话的短期信息,并且需要较高的安全性。不要在会话状态中存储大量的信息。需要注意,将为应用程序中每一会话的生存期创建并维护会话状态对象。在支持许多用户的应用程序中, 这可能会占用大量服务器资源并影响可缩放性。

  cookie: 当您需要在客户端存储少量信息以及不存在安全性问题时使用。类的静态属性,方便传送多个数据。

  cache :对象用于单个用户、一组用户或所有的用户。可以为多个请求长时间、高效率的保存数据。上述几个方法, 不仅用于情况三, 前面两种情况都可以使用,只是没有必要时尽量少用,否则会造成资源浪费或增加程序的复杂性。