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

如题所述

  引言  Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留。在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确、安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合。  1、ASP.NET页面间数据传递的各种方法和分析  1.1 使用Querystring 方法  QueryString 也叫查询字符串, 这种方法将要传递的数据附加在网页地址(URL)后面进行传递。如页面A.aspx 跳转到页面B.aspx,可以用Request.Redirect("B.aspx?参数名称=参数值")方法,也可以用超链接:,页面跳转后,在目标页面中可用Ruquest["参数名称"]来接收参数。使用QuerySting 方法的优点是实现简单, 不使用服务器资源;缺点是传递的值会显示在浏览器的地址栏上,有被篡改的风险,不能传递对象,只有在通过URL 请求页时查询字符串才是可行的。  1.2 利用隐藏域  隐藏域不会显示在用户的浏览器中, 一般是在页面中加入一个隐藏控件, 与服务器进行交互时把值赋给隐藏控件并提交给下一页面。隐藏域可以是任何存储在网页中的与网页有关的信息的存储库。使用隐藏域存入数值时用:hidden 控件.value=数值,取出接收数值时用:变量=hidden 控件.value。使用隐藏域的优点是实现简单, 隐藏域是标准的HTML 控件,不需要复杂的编程逻辑。隐藏域在页上存储和读取,不需要任何服务器资源,几乎所有浏览器和客户端设备都支持具有隐藏域的窗体。缺点是存储结构少,仅仅支持简单的数据结构,存储量少,因为它被存储在页面本身,所以无法存储较大的值,而且大的数据量会受到防火墙和代理的阻止。  1.3 ViewState  ViewState 是由ASP.NET 页面框架管理的一个隐藏的窗体字段。当ASP.NET 执行某个页面时,该页面上的ViewState 值和所有控件将被收集并格式化成一个编码字符串, 然后被分配给隐藏窗体字段的值属性。使用ViewState 传递数据时可用:ViewState [" 变量名"]=数值,在取出数据时用:变量=ViewState["变量名"]。使用ViewState 的优点是:在对同一页的多个请求间自动保留值,不用服务器端资源,实现简单,视图状态中的值经过哈希计算和压缩,并且针对Unicode 实现进行编码,其安全性要高于使用隐藏域;缺点是因为ViewState 存储在页面本身,因此如果  存储较大的值,用户显示页和发送页时的速度可能会减慢。虽然视图状态以哈希格式存储数据,但它仍可以被篡改。  1.4 使用Cookie  Cookie 可以在页面之间传递少量信息, 可以存储在客户端的文本文件中,也可存储在客户端的内存中。Cookie 方法适用于存储少量页面中经常改动的信息, 如为登陆过的网站保存登陆用户名,为用户输入提供方便,还有在一些用户自定义项目上保存用户的个性化设置。使用Cookie传递数据时可用:Response.Cookies["键名"]=键值;取出数据用:变量名=Request.Cookies["键名"]。使用Cookie 优点是:Cookie 存储在客户端, 不使用服务器资源,实现简单,可配置到期时间。缺点是:可以存储的数据量比较少,由于Cookie 并不被所有的浏览器支持,而且还可能被用户禁止或删除,所以不能用于保存关键数据。另外,Cookie 保存的形式是简单的明文文本,在它里面不宜保存敏感的、未加密的数据。  1.5 使用Application 变量  使用Application 变量也可以实现页面间的传值,Application变量是全局性的,所有用户共享一个Application 变量,一旦定义,它将影响到程序的所有部分。如果想在整个应用程序范围使用某个变量值Application 对象将是最佳的选择。存入数据时, 把值添加到Application 变量里:Application["变量名"]=数值;取出数据用:变量=Application["变量名"];在不需要使用该Application 时,要显式清除它:Application["量名"]=null。  Application 优点:易于使用,全局范围。可供应用程序中的所有页来访问。缺点:若保存数据的服务器端进程被损坏(如因服务器崩溃、升级或关闭而损坏),那么数据就会丢失,所以利用Application 一定要有保底的策略;占用服务器端的内存,这可能会影响服务器的性能以及应用程序的可伸缩性。  1.6 使用Session 变量  Session 对象可以用来存储需要维护的指定对话的信息,不同的客户端生成不同的Session 对象。Session 用于存储特定于单独会话的短期信息。Session 的使用方法和格式与Application 相同。  优点:易于实现,并且提供较高的安全性和持久性,可以应对IIS 重启和辅助进程重启,可在多进程中使用。缺点是耗用服务器端的内存。所以不要存储大量的信息。Session 最常见的用途是与Cookie 一起向Web 应用程序提供用户标识功能,Session也可用于不支持Cookie 的浏览器。
温馨提示:内容为网友见解,仅供参考
无其他回答

列举ASP.NET 页面之间传递值的几种方式?
1、使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:a.aspx的C#代码 private void Button1_Click(obj...

列举ASP.NET 页面之间传递值的几种方式?
1、使用querystring变量 Querystring是一种非常简单的传递值的方法。它可以在浏览器的地址栏中显示传输的值。当传递一个或多个安全性要求较低或结构简单的值时,可以使用此方法。但是对于传递数组或对象,不能使用此方法。下面是一个例子:a.aspx的C#代码 private void Button1_Click(object sender, Syste...

ASP.NET页面间数据传递的几种方法
1、ASP.NET页面间数据传递的各种方法和分析1.1 使用Querystring 方法QueryString 也叫查询字符串, 这种方法将要传递的数据附加在网页地址(URL)后面进行传递。如页面A.aspx 跳转到页面B.aspx,可以用Request.Redirect("B.aspx?参数名称=参数值")方法,也可以用超链接:,页面跳转后,在目标页面中可用Ruq...

ASP.NET页面间数据传递的方法
ASP NET页面间数据传递的各种方法和分析 使用Querystring 方法 QueryString 也叫查询字符串 这种方法将要传递的数据附加在网页地址(URL)后面进行传递 如页面A aspx 跳转到页面B aspx 可以用Request Redirect( B aspx?参数名称=参数值 )方法 也可以用超链接 页面跳转后 在目标页面中可用Ruquest[ 参数名称 ]来接收参...

ASP.NET页面之间传递值的几种方式
一、QueryString QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。 这种方法的优点:1.使用简单,对于安全性要求不高时传递数字或是文本值...

ASP.NET 跨页传递的方法有哪几种,具体说
如果我们需要重定位到不同服务器的网页,就需要使用Response.Redirect方法。 四、跨页提交概述 在ASP.NET 2.0中,我们可以通过实现IbuttonControl接口提交给不同的WebForm,来实现跨网页的提交。和Response.Redirect类似,跨网页提交是一个基于客户端的传输机制,但也有点象Server.Transfer,目标网页也可以访问源网页的数据。

ASP.NET中怎么在两个网页中传递数据?
这个可用session,application ,也可以用数据库,一个页面传值到数据库,另一个在获取,也可以用文件本文件,还有也可以用JS中AJAX可以获取另一个页面,用IFRAM也行,传值用JS,这个两个页面进行传递数据就大致以上几种方法,这个全是个人经验所得,有不足望见谅 ...

asp.net和asp有几种传值方式(各是什么)
使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:1...

在asp.net中怎么实现网页间数据的传递
你可以用session 保存值 或者request.QueryString[""] 来接收值 保存值 session["a"]=值或对象都行 如果保存的是字符串 就是 string a=session["a"].tostring();对象就不用多说了吧·request传值方式就如楼上所说了·其实还有很多传值的方式·有8种·自己去网上看看吧!

asp.net 里如何把一个页里的一条数据推送到另一个页里
传递到另一个页面的方式很多,不过常用的有以下2种:放在URL中,通过?a=1&b=2进行Get传递,在目标页面中通过获取URL指定参数来获得数据。通过JQ的ajax使用方法很简单$.post(url,data,function(){}),在目标页面通过request请求获取post对应的数据。可以说说具体的业务场景。

相似回答