问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ASP.NET页面间数据传递的方法

发布网友 发布时间:2023-06-08 15:07

我来回答

1个回答

热心网友 时间:2024-01-11 00:56

  本文我们将讨论的是页面间数据传递的几种方法 对此希望能帮助大家正确的理解ASP NET页面间数据传递的用处以及便利性

  引言

  Web页面是无状态的 服务器对每一次请求都认为来自不同用户 因此 变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留 在用ASP NET 设计开发一个Web系统时 遇到一个重要的问题是如何保证数据在页面间进行正确 安全和高效地传送 提供了状态管理等多种技术来解决保存和传递数据问题 以下来探讨 NET 下的解决此问题的各种方法和各自的适用场合

  ASP NET页面间数据传递的各种方法和分析

   使用Querystring 方法

  QueryString 也叫查询字符串 这种方法将要传递的数据附加在网页地址(URL)后面进行传递 如页面A aspx 跳转到页面B aspx 可以用Request Redirect( B aspx?参数名称=参数值 )方法 也可以用超链接 页面跳转后 在目标页面中可用Ruquest[ 参数名称 ]来接收参数 使用QuerySting 方法的优点是实现简单 不使用服务器资源 缺点是传递的值会显示在浏览器的地址栏上 有被篡改的风险 不能传递对象 只有在通过URL 请求页时查询字符串才是可行的

   利用隐藏域

  隐藏域不会显示在用户的浏览器中 一般是在页面中加入一个隐藏控件 与服务器进行交互时把值赋给隐藏控件并提交给下一页面 隐藏域可以是任何存储在网页中的与网页有关的信息的存储库 使用隐藏域存入数值时用 hidden 控件 value=数值 取出接收数值时用 变量=hidden 控件 value 使用隐藏域的优点是实现简单 隐藏域是标准的HTML 控件 不需要复杂的编程逻辑 隐藏域在页上存储和读取 不需要任何服务器资源 几乎所有浏览器和客户端设备都支持具有隐藏域的窗体 缺点是存储结构少 仅仅支持简单的数据结构 存储量少 因为它被存储在页面本身 所以无法存储较大的值 而且大的数据量会受到防火墙和代理的阻止

   ViewState

  ViewState 是由ASP NET 页面框架管理的一个隐藏的窗体字段 当ASP NET 执行某个页面时 该页面上的ViewState 值和所有控件将被收集并格式化成一个编码字符串 然后被分配给隐藏窗体字段的值属性 使用ViewState 传递数据时可用 ViewState [ 变量名 ]=数值 在取出数据时用 变量=ViewState[ 变量名 ] 使用ViewState 的优点是 在对同一页的多个请求间自动保留值 不用服务器端资源 实现简单 视图状态中的值经过哈希计算和压缩 并且针对Unicode 实现进行编码 其安全性要高于使用隐藏域 缺点是因为ViewState 存储在页面本身 因此如果

  存储较大的值 用户显示页和发送页时的速度可能会减慢 虽然视图状态以哈希格式存储数据 但它仍可以被篡改

   使用Cookie

  Cookie 可以在页面之间传递少量信息 可以存储在客户端的文本文件中 也可存储在客户端的内存中 Cookie 方法适用于存储少量页面中经常改动的信息 如为登陆过的网站保存登陆用户名 为用户输入提供方便 还有在一些用户自定义项目上保存用户的个性化设置 使用Cookie传递数据时可用 Response Cookies[ 键名 ]=键值 取出数据用 变量名=Request Cookies[ 键名 ] 使用Cookie 优点是 Cookie 存储在客户端 不使用服务器资源 实现简单 可配置到期时间 缺点是 可以存储的数据量比较少 由于Cookie 并不被所有的浏览器支持 而且还可能被用户禁止或删除 所以不能用于保存关键数据 另外 Cookie 保存的形式是简单的明文文本 在它里面不宜保存敏感的 未加密的 数据

   使用application 变量

  使用Application 变量也可以实现页面间的传值 Application变量是全局性的 所有用户共享一个Application 变量 一旦定义 它将影响到程序的所有部分 如果想在整个应用程序范围使用某个变量值Application 对象将是最佳的选择 存入数据时 把值添加到Application 变量里 Application[ 变量名 ]=数值 取出数据用 变量=Application[ 变量名 ] 在不需要使用该Application 时 要显式清除它 Application[ 量名 ]=null

  Application 优点 易于使用 全局范围 可供应用程序中的所有页来访问 缺点 若保存数据的服务器端进程被损坏(如因服务器崩溃 升级或关闭而损坏) 那么数据就会丢失 所以利用Application 一定要有保底的策略 占用服务器端的内存 这可能会影响服务器的性能以及应用程序的可伸缩性

   使用session 变量

  Session 对象可以用来存储需要维护的指定对话的信息 不同的客户端生成不同的Session 对象 Session 用于存储特定于单独会话的短期信息 Session 的使用方法和格式与Application 相同

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

   使用类的静态属性

  这种方法是利用类的静态属性实现两个页面间的值传 定义一个包含静态属性的类 将要传送的值赋给静态属性 目标页面中可以通过静态属性获得源页面中要传的值

  优点是可以方便传送多个数据 缺点是需要额外编程 增加程序设计的工作量 占用服务器内存

   使用Server Transfer

  通过Server Transfer 方法把执行流程从当前的ASPX 文件转到同一服务器上的另一个ASPX 页面的同时 可保留表单数据或查询字符串 做法是把该方法的第二个参数设置成True 在第一个页面用Server Transfer( 目标页面名 aspx true) 目标页面取出数据用 Ruquest Form[ 控件名称 ]或Ruquest QueryString[ 控件名称 ] 中还可以这样来用 代码如下

  PReviousPage pg

  pg =(PreviousPage)Context Handler

  Response Write(pg Name)

  说明 此段代码用在目标页面中取出传递的值 Previous Page 是原页面的类名 Name 是在原页面定义的属性 需要传递 的数据存入到此属性中

  使用这种方法 需要写一些代码以创建一些属性以便可以 在另一个页面访问它 可以在另一个页面以对象属性的方式来 存取数值 这个方法在页面间值传递中是特别有用的 这种方法 不但简洁 同时又是面向对象的

   Cache

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

  不同页面跳转情况下可采用的传值方法

   情况一 源页面可以跳转到目标页面 源页面传递数据给目标页面

  使用查询字符串 将少量信息从一页传输到另一页以及不 存在安全性问题时 是一个简单常用的方法 使用Server Transfer方法 可传递表单数据或查询字符串到另一个页面 还可以 保存初始页的HttpContext 当目标页和源页面在同一个服务器 时 可以用此方法

   情况二 页面传递数值给自身页面

  即在对同一页的多个请求间保留值 ViewState 属性可提供具有基本安全性的功能 也可用隐藏域 存储少量回发到自身或另一页的页信息时使用 不考虑安全性问题时使用

   情况三 源页面传递数值给目标页面 而源页面不能直接连接到目标页面

  有多个方法 具体用哪个要看具体情况

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

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

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

lishixin/Article/program/net/201311/12141
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪些女人不值得男人珍惜? 潘集区第一小学优秀学生 优秀干部登记表 ...没想到洗几次更大了 有什么办法能让他变小点吗 纯棉的 济南哪里卖手机放心,便宜 飞利浦手机在烟台的售后服务在哪里 ? 济南哪里有飞利浦专卖店 微信群内发红包,怎么会让陌生人就领取了???为什么?? 我的戴尔笔记本电脑 无意中出现飞行模式。关闭不了。求大家帮忙_百度知 ... 什么是受伤庄股 月季紫霞的保护瓣需要摘掉吗 男人梦见十几年前的女友好不好 男人梦见十几年前的女友是什么意思_百 ... 梦见十几年未见的亲人的预兆 rio鸡尾酒能不能混开水 鸡尾酒可以加热吗?红酒呢? 天冷啦,RIO锐澳鸡尾酒可以加热饮用吗? 鸡尾酒为什么禁止加热 微醺可以加热吗 一个人过年要准备多少菜合适啊? ...桌旗放在软玻璃上面还是下面啊 我是黑色钢化玻璃餐桌 桌子上有水晶板还能放桌旗么 中国的姓氏中有姓菊的吗? 菊姓全国人口 108国道631公里600米在哪里网友谁知道告诉我? 原平市崞阳镇下丰洼村北面省108国道探测地层,修建什么 砂河到石岭关2021年开工吗 曲江一中初中部啥水平 西安市曲江第一中学咋样,比起西安中学,83中呢? 西安市初中学校中考升学率排名 曲江一中高考升学率 卢焯是怎么死的 卢卓剪官袍是真的吗 听人说用洗洁精来洗衣服比洗衣粉的效果好这有道理吗 洗衣粉和洗洁精谁的灭菌效果比较好 请问是北京师范大学好还是武汉大学好? 北京师范大学法学和播音主持哪个好? 南方科技大学要多少分能上 南方科技大学河南提前批分数线 南方科技大学分低的能报名吗 妇女的意思 北风吹呀吹呀我的心已碎代表什么意思 钟字用文言文怎么表达 文言文掩耳盗钟里则的意思 钟氏之子这篇古文怎么解释 集成墙板室内设计师有前途吗 设计师大多不赞成用集成灶,集成灶有什么优缺点? D2C全球设计师集成平台的D2C官网 解百纳是否会回归张裕? 梦见男朋友和别的女人结婚的预兆 梦见自己男朋友跟别的女人结婚的预兆