ASP.NET跨页传值方法汇总
方法一:问号传值(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跨页传值方法汇总相关推荐
- frame跨页传值/AJAX出错解决方案 + 知识补充:浏览器同源政策
一.同源政策 1.1概念 浏览器安全的基石是 "同源政策"(same-origin policy). 1995年,同源政策由 Netscape 公司引入浏览器.目前,所有浏览器都实 ...
- Asp.net页面间传值方式汇总
在优化.NET中,用到了页面传值的功能,汇总出来跟大家分享一下. 我找到了七种传值方式,分别是:URL传值,Session传值,Cookie传值,Server.Transfer传值,Applicati ...
- Word2003删除空白页的方法汇总
一本长篇小说终于编辑完成了,剩下的工作就是检查了.但在检查过程中笔者发现,用Word2003编辑完成的作品,存在许多空白页.连自己都不知道是什么时候留下的.有的空白页面可以简单的删除掉,但是有的空白页 ...
- ASP.NET跨页面传值(二)
在网页应用程序的开发中,页面之间的传值应该是最常见的问题了. 在这篇文章里,azamsharp 将为我们介绍一些ASP.NET页面传值的方式.本文所举的例子非常简单,仅仅包含了一个文本框和几个按钮,当 ...
- asp.net 跨页面传值(一)
1. 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法 ...
- ASP.NET跨页面传值技巧
1. 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法 ...
- ASP.NET跨页面传值技巧总结【转】
1.使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但 ...
- ASP.NET跨页面传值技巧总结
1. 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法. ...
- 艾伟:ASP.NET跨页面传值技巧总结
关于页面传值的方法,引发了很多讨论.看来有很多人关注这个,我就我个人观点做了些总结,希望对大家有所帮助. 1. 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以 ...
最新文章
- dae模型如何合并_FBX、DAE模型的格式、导入与骨骼动画
- 「干货」谷歌大脑:元学习最新进展与挑战(40 PPT下载)
- [转]XPS转JPG转换器
- “数学的重要性及其应用“系列公益讲座01
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1098:质因数分解
- (四)boost库之正则表达式regex
- 异常处理——Another app is currently holding the yum lock
- 时间序列研(part7)--单位根检验
- BeanUtils自定义转换器
- c++ 提取傅里叶描述子_AI大语音(四)——MFCC特征提取(深度解析)
- 优秀小程序demo 源码
- 从pandas到geopandas
- golang基础1-0:golang环境配置及第一行代码Hello World
- 【Tableau Desktop 企业日常技巧12】Tableau CA或者CDA 考试真题(附带国外面试题目)
- lisp弧度转度分秒_用C语言实现度分秒与弧度的转化
- Matlab:数组索引
- 黑马程序员:Java学习路线图上线了
- 计算机房电磁辐射防护,环境电磁辐射监测仪器要求和标准监测方法
- 审稿意见的“so what”如何处理?
- 360插件化方案RePlugin学习笔记-资源共享
热门文章
- java 8 方法引用(method references)
- 手把手教你部署VSAN见证虚拟设备 (Cormac)
- innosetup区分正常状态和静默安装状态(通过传递的参数)
- PHP ThinkPHP学习第一步(搭建及认识ThinkPHP入口文件)
- python 细枝末节
- bootcmd 和bootargs
- SCARA机器人与 DELTA机器人
- 【图像处理】——实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(connectedComponentsWithStats()函数和connectedComponents()函数)
- 学习笔记02:直播串讲02
- php 完美分页,php完美分页类程序