Asp.Net跨页面传值

一.QueryString

A页面:传递参数的Url形式  

                                 1.String Url="Main.aspx?ID=12345";

                                 2.String Url="Main.aspx?paraName1="+_para1+"&paraName2="+_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)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值