方法一:问号传值(Response.Redirect方法)

1:源页:在按钮的点击事件程序中写入Response.Redirect方法,在其中使用问号传值。如:

Response.Redirect("Default2.aspx?id="+txtId.Text.Trim()+"&name="+Server.UrlEncode(txtName.Text.Trim()));

HTML代码中可以这样写:

<a href="Default2.aspx?id=1&name=aa">跳转</a>  //多个值用&相连,注意&两边不要加空格

2:目标页:在Request.QueryString集合中查找。

如:Response.Write("ID is "+Request.QueryString["id"].ToString());

或者:<% =Request.QueryString["id"] %>

特点:简单方便,可以跨WEB服务器,但效率低。当Web服务器接到一个重定向请求后,它会将一个响应头送给客户端,这将导致客户端发送一个新的请求到服务器。按句话说,一个重定向请求实际上是两个请求响应。如果想要传递一个安全性不太重要或一个结构简单的数值时,用此法最容易。

方法二:使用Server.Transfer

1:源页:在按钮的点击事件程序中写入:  Server.Transfer("Default2.aspx", true);   注意一定要加上第二个参数true,否则值传不过去。

2: 目标页:在Request.Form集合中查找发送方页面上的文本框架ID,如

Response.Write("传过来的名字是:"+Request.Form["txtName"].ToString());

特点:跳转的范围仅限于同一个Web服务器的不同网页,且在地址栏中显示的仍是原网页的地址,不便于调试,但属于服务器端的直接重定向,效率比Response.Redirect方法高。

Response.Redirect和Server.Transfer的比较:
由于Response.Redirect方法要进行两次请求响应操作,因此,我们应该在对性能要求高的网站尽量避免使用这种方法。然而,只从技术上说,使用redirect方式确实可以从一个网页跳到另一个网页。相比之下,Server.Transfer会更有效率,但是。从本质上说,我们可以使用 Server.Transfer来消除不必要的请求响应操作。如果我们需要重定位到不同服务器的网页,就需要使用Response.Redirect方法。

方法三:使用PostBackUrl

从ASP.NET2.0开始,可以使用PostBackUrl实现跨页传值。

1:源页:在实现了IbuttonControl接口的控件(如按钮、LinkButton等)上,添加属性PostBackUrl="~/Default2.aspx"

2: 目标页:使用PreviousPage属性,且最好判断一下是否是从发送页以PostBackUrl方式跳转过来的,代码如下所示:

if(PreviousPage!=null && PreviousPage.IsCrossPagePostBack &&

PreviousPage.IsValid)

{

TextBox txt = (TextBox)PreviousPage.FindControl("txtName");

Response.Write(txt.Text);

}

若要获取源页的公共成员(例如某个属性的值),必须先获取对源页的强类型引用。例如:

源页中有如下属性:public String CurrentCity{    get    { return textCity.Text;   }}

目标页:<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>

Label1.Text = PreviousPage.CurrentCity;

特点:底层通过javascript函数和保存视图状态的__POSTBACK的隐藏字段实现。具体效率应该较高。

方法四:使用Application对象变量

1:源页: 保存信息,建议同时使用Lock和UnLock方法。

Application.Lock();

Application["PageRequestCount"] =

((int)Application["PageRequestCount"])+1;

Application.UnLock();

2:目标页:int cnt=int.Parse(Application["PageRequestCount"].ToString());

特点:全局变量,所有用户可见,常用在聊天室程序中。

方法五:使用Session

1:源页:保存信息

Session["Name"]= txtName.Text;

2:目标页 string name=Session["Name"].ToString();

Session对象变量若存储过多的数据则会消耗大量的服务器资源,在使用时尤其要注意控制数量。

方法六:使用Cookie

1:源页: HttpCookie Name= new HttpCookie("Name");
      Name.Value= txtName.Text;

cookie.Expires = DateTime.Now.AddMinutes(30);

HttpContext.Current.Response.AppendCookie(Name);

2:目标页:string info =Request.Cookies["cookiename"].Value;

或者:

HttpCookie acookie=Request.Cookie("cookiename");//通过Request获取acookie对象
 string aa=acookie.Value.ToString();//在通过Value属性获取值基本上和Response用法相似。在获取cookie之前,应确保该cookie确实存在。否则,您将得到一个system.NullReferenceException

注:后面三种方法用的是三大对象,各自的特点请参考其他资料。

转载于:https://www.cnblogs.com/lgzslf/archive/2009/05/21/1486362.html

ASP.NET跨页传值方法汇总相关推荐

  1. frame跨页传值/AJAX出错解决方案 + 知识补充:浏览器同源政策

    一.同源政策 1.1概念 浏览器安全的基石是 "同源政策"(same-origin policy). 1995年,同源政策由 Netscape 公司引入浏览器.目前,所有浏览器都实 ...

  2. Asp.net页面间传值方式汇总

    在优化.NET中,用到了页面传值的功能,汇总出来跟大家分享一下. 我找到了七种传值方式,分别是:URL传值,Session传值,Cookie传值,Server.Transfer传值,Applicati ...

  3. Word2003删除空白页的方法汇总

    一本长篇小说终于编辑完成了,剩下的工作就是检查了.但在检查过程中笔者发现,用Word2003编辑完成的作品,存在许多空白页.连自己都不知道是什么时候留下的.有的空白页面可以简单的删除掉,但是有的空白页 ...

  4. ASP.NET跨页面传值(二)

    在网页应用程序的开发中,页面之间的传值应该是最常见的问题了. 在这篇文章里,azamsharp 将为我们介绍一些ASP.NET页面传值的方式.本文所举的例子非常简单,仅仅包含了一个文本框和几个按钮,当 ...

  5. asp.net 跨页面传值(一)

    1.  使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法 ...

  6. ASP.NET跨页面传值技巧

    1.  使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法 ...

  7. ASP.NET跨页面传值技巧总结【转】

    1.使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但 ...

  8. ASP.NET跨页面传值技巧总结

    1. 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法. ...

  9. 艾伟:ASP.NET跨页面传值技巧总结

    关于页面传值的方法,引发了很多讨论.看来有很多人关注这个,我就我个人观点做了些总结,希望对大家有所帮助. 1.  使用QueryString变量 QueryString是一种非常简单的传值方式,他可以 ...

最新文章

  1. dae模型如何合并_FBX、DAE模型的格式、导入与骨骼动画
  2. 「干货」谷歌大脑:元学习最新进展与挑战(40 PPT下载)
  3. [转]XPS转JPG转换器
  4. “数学的重要性及其应用“系列公益讲座01
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1098:质因数分解
  6. (四)boost库之正则表达式regex
  7. 异常处理——Another app is currently holding the yum lock
  8. 时间序列研(part7)--单位根检验
  9. BeanUtils自定义转换器
  10. c++ 提取傅里叶描述子_AI大语音(四)——MFCC特征提取(深度解析)
  11. 优秀小程序demo 源码
  12. 从pandas到geopandas
  13. golang基础1-0:golang环境配置及第一行代码Hello World
  14. 【Tableau Desktop 企业日常技巧12】Tableau CA或者CDA 考试真题(附带国外面试题目)
  15. lisp弧度转度分秒_用C语言实现度分秒与弧度的转化
  16. Matlab:数组索引
  17. 黑马程序员:Java学习路线图上线了
  18. 计算机房电磁辐射防护,环境电磁辐射监测仪器要求和标准监测方法
  19. 审稿意见的“so what”如何处理?
  20. 360插件化方案RePlugin学习笔记-资源共享

热门文章

  1. java 8 方法引用(method references)
  2. 手把手教你部署VSAN见证虚拟设备 (Cormac)
  3. innosetup区分正常状态和静默安装状态(通过传递的参数)
  4. PHP ThinkPHP学习第一步(搭建及认识ThinkPHP入口文件)
  5. python 细枝末节
  6. bootcmd 和bootargs
  7. SCARA机器人与 DELTA机器人
  8. 【图像处理】——实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(connectedComponentsWithStats()函数和connectedComponents()函数)
  9. 学习笔记02:直播串讲02
  10. php 完美分页,php完美分页类程序