ASP.NET中页面传值技巧

ASP.NET中有几种基于页面间的传值方法:

1,

常见的有QueryString.这种方法最简单不过了,但缺点就是它把要传送的值显示在地址栏中,如果对于在安全性的信息来说这并不是一种好的解决方案。还有一个缺点就是它不能传对象。这种方法适合于传送一个简单的值及安全性不大重要的信息。

例:

有两个页面:WebForm1.aspx,WebForm2.aspx
  
WebForm1.aspx.cs的某些事件中放置如下代码:
   string url="WebForm2.aspx?name="+this.txtname.Text;
   Response.Redirect(url);
            
  
接着关键时刻出现了:在WebForm2.aspx.cs中某些事件中放置如下代码:
   lblname.Text=Request.QueryString["name"];
   OK!
整个传值过程完成!

2,

利用Session变量来传值,这种也比较常用。利用Session比较灵活,可以在多个页面间进行传值。当调用其remove后,Session即失效。

例:

WebForm1.aspx.cs中写入如下代码:
Session["name"]=txtname.Text;
   
Response.Redirect("WebForm2.aspx");
下面在WebForm1.aspx.cs中取出Session的值:
lblname.Text=Session["name"].ToString();
 //因为取出来的是一个对象,所以必须转换类型
Session.Remove("name");? //
使Session失效

3,

 第三种方式是利用Request对象来取值,(注:这里使用的是html控件)这种比较简洁。

例:

WebForm1.aspx中:

Name:                      

?

WebForm2.aspx.cs中某个事件写入:Response.Write(Request.Form["txtname"]);

当点击submit按钮后,即通过Request.Form[”txtname”]取出了值,

4,

利用Server对象的Transfer()方法来传值,它接收一个页面对象。

例:

第四种方法是利用Server对象的Transfer()方法来传值,它接收一个页面对象。

下面用代码来讲解一下这种实现方式:

Server_Transfer_Demo.aspx 的某个事件中写入如下代码:Server.Transfer("Server_Transfer_Result.aspx"); //传递页面对象
接着就可以在Server_Transfer_Result.aspx.cs中获取WebForm1的页面对象。
先在Server_Transfer_Result.aspx.aspx 加入<%@ PreviousPageType VirtualPath="~/Server_Transfer_Demo.aspx" %>

   //方式一

        //注意要加上<%@ PreviousPageType VirtualPath="~/Server_Transfer_Demo.aspx" %>

        if (Context.Handler is Server_Transfer_Demo)

        {

            Server_Transfer_Demo demo = (Server_Transfer_Demo)Context.Handler;

            Response.Write("方式一Context.Handler"+((TextBox)demo.FindControl("txtName")).Text);

 

        }

 

        //方法二

        if (Page.PreviousPage != null)

        {

            if (!PreviousPage.IsCrossPagePostBack)

            {

                Response.Write("方式二PreviousPage.IsCrossPagePostBack" + ((TextBox)this.PreviousPage.FindControl("txtName")).Text);

            }

        }

 

 

        //方法三,要求在上一次页面写上    public string TxtName{get { return txtName.Text; }}属性透露,

        //注意要加上<%@ PreviousPageType VirtualPath="~/Server_Transfer_Demo.aspx" %>

        Response.Write("方法三:"+PreviousPage.TxtName); (注:以上几种方法,除了Request.Form()这种传值方法使用的是HTML控件外,其它几种都是使用WEB控件)

5, cookie

例:

Cookie_Demo.aspx txtNamebutSubmit按钮

butSubmit事件中加入

HttpCookie cookie = new HttpCookie("cookie_Name",this.txtName.Text);

        cookie.Expires = DateTime.Now.AddDays(1);

        Response.Cookies.Add(cookie);

        Server.Transfer("Cookie_Result.aspx");

Cookie_ResultAspx的事件中

加入

string name = Request.Cookies["cookie_Name"].Value;

        Response.Write(name);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值