一.QueryString
A页面:传递参数的Url形式
1.String Url="Main.aspx?ID=12345";
2.String Url="Main.aspx?paraName1="+_para1+"¶Name2="+_para2;
Response.Redirect(Url);
B页面(Main.aspx):获取参数
_ID=Request.Querystring["ID"] ;
_para1=Request.Querystring["paraName1"] ;
_para2=Request.Querystring["paraName2"] ;
注意:1.只能传递2K以内的信息,2K包括URL地址"http://......",从//之后开始计算;
2.获取信息的形式只能是一个字符串;
3.Server.Transfer,Response.Redirect的小Bug,调用不存在的Request.QueryString["Pname"],返回的是null;
4.在保证不会与其他参数重名时,可以简略写成:Request["ParaName"];
二.Form-Post控件传递
1.被设置了PostBackUrl的控件,将整个页面提交给服务器,服务器有了访问这个被提交的页面上的控件的权限。
例如在A页面(PreciousPage)上的一个控件的属性加上PostBackUrl="~/B.aspx",则点击这个控件跳转到B页面后,B页面可以访问A页面上的控件;
访问代码如下:
TextBox tb = (TextBox)PreviousPage.FindControl("TB"); //其中TB为A页面上控件的ID
CheckBoxList ckbl = (CheckBoxList)PreviousPage.FindControl("CBL");
DropDownList ddl = (DropDownList)PreviousPage.FindControl("DDL");
然后在
三.Cookies传递
1.实现单值Cookie的设置(新增、修改)
HttpCookie ck_animal=new HttpCookie("animal"); //声明创建(可同时赋值),animal是Cookie的Name属性
ck_animal.Value="猫";
ck_animal.Expires=DataTime.Now.AddDays(1); //设置有效期(一个时间点);如果不设置有效时间,关闭浏览器,Cookie就 失效;如果设置的有效时间是当下时间以前的,Cookie就无效;
Response.Cookies.Add(ck_animal); //发送写入Cookie指令给浏览器
2.实现单值Cookie信息读取
需要加一个判断,判断Cookie是否存在。当存在时。才进行读取。判断:
if(Request.Cookies["animal"]!=null)
{
_myStr=Request.Cookies["animal"].Value;
}
注意:Value必须加,不同于Request.QueryString["..."],Requset.Cookies["..."]是一个对象;
3.实现单值Cookie信息删除
删除Cooike值不同于清空变量值,它存放的位置是客户端硬盘。
删除Cookie的思路:将CookieName的有效期Expire设置为一个过期日期,再次写入客户端硬盘。
标准写法:Reponse.Cookies["..."].Expires=DateTime.MinValue;
4.多值Cookie的添加
HttpCookie ck2=new HttpCookie("multi_cookie") ; //主键
ck2.Values.Add("name","小王"); //子键
ck2.Values.Add("age","18"); //子键
ck2.Values.Add("sex","男"); //子键
ck2.Expires=DateTime.MaxValue;
Reponse.Cookies.Add(ck2);
5.多值Cookie子键值的修改,删除
ck.Values.Set("KeyName","NewValue"); //修改
ck.Values.Remove("KeyName"); //删除一个子键
ck.Values.Clear(); //删除全部子键
6.多值Cookie主键删除
删除方法与单值Cookie的删除方式相同
7.全Cookie的遍历
--对主键遍历
foreach(string _key in Request.Cookies.AllKeys){...}
--对某已一主键下所有的子键遍历
foreach(string _subkey in Request.Cookies["KeyName"].Values.Keys){...}
四.Application传递
1.Application简介:
服务器内存中存储的;独立于用户请求的公共数据;只要应用程序(服务器)不停止就一直存在,直到有显式的删除或更改;没有存储大小限制;没有存储类型限制;缺乏自我管理机制,数据不会自动释放;
2.对Application的操作
----创建一个Application
Application["KeyName"]=...;
Application.Add("KeyName",value);
----获取一个Application
对于字符串:
String ss=Application["KeyName"].ToString();
对于TextBox;
TextBox tb=(TextBox)Application["KeyName"];
--修改一个Application
Application.lock(); //锁定Application,防止其他用户同时对这个键值进行操作
Application["KeyName"]=...;
Application.unlock(); //解锁Application;
--遍历一个Application
foreach(string _key in Application.AllKeys){...} //对键名遍历
五.Session传递
1.Session简介:
每个用户(浏览器实例)访问WEB服务器时各分配一个SessionID;会话结束或超时会自动释放;没有存储类型限制;存储大小只受服务器内存限制;SessionID存放在客户端的Cookie中,当Cookie被禁用时,Session也不能使用;用Session存储信息时,存储的信息放在服务器的内存中;
2.Session的存放位置:
3.对Session的操作:
----创建一个Session的Key或更新一个Session的Key的值
Session["KeyName"]=...;
Session.Add("KeyName",Value);
以上语句操作结果相同,赋值的内容可以是任何类型;
----获取一个Session的值:
对于字符串:
String ss=Session["KeyName"].ToString(); // 如果str是一个控件而且没有加toString()则语句则会将这个控件的名称传给ss;
对于TextBox:
TextBox tb=(TextBox)Session["KeyName"];
--遍历Session
foreach(string _key in Session.Keys){...} //对键名遍历
----清除Session
清除某一个Session:
Session.Remove("KeyName");
清除所有Session:
Session.Abandon(); //如果是在按钮中清除Session,由页面的生命周期可知PageLoad事件中仍能读取到清除之前的Session的值,如果想得到清除后的值可以在清除后重新获取页面Response.Redirect(Request.Url.LocalPath//获取当前页面Url)