If you don't go after what you want, you'll never have it. If you don't step forward, you're always in the same place.

ASP.NET 跨页面传值的技巧

一、使用QueryString 变量

   QueryString 是一种非常简便的传值方式,他可以将传递的值显示在地址栏中。

   如果传递一个或多个安全性不高,结构要求不高的数值时,可以用QueryString,  因为安全性比较低,所以慎用。

   如果像传递 数组、对象,就不能使用QueryString 了。

   例子:

   home.aspx的C#代码

   private void Button1_Click(object sender, System.EventArgs e)
{

   string str_url;

     str_url="index.aspx?name="+ Label1.Text;

     Response.Redirect(str_url);

}

index.aspx  c#代码

private void Page_Load(object sender, EventArgs e)
{

    string   strName=Request.QueryString["name"];

    TextBox1.Text=strName;

 }

二、使用Application 对象变量,全局应用程序

Application 对象的作用范围是整个全局, 所以他对每个用户都有效。其常用的有 lock  和Unlock 这个两个方法。

a.aspx c# 代码

private void Button1_Click(object sender, System.EventArgs e)
{

       Application["name"]=Label1.Text;

      Server.Transfer("b.aspx");

}

b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{

    //在使用 Application 获取传值时,必须得解锁,然后锁上,如:

       Application.Lock();

       string strname =Application["name"].Tostring(); 

      Application.UnLock();

}

三、使用 Session 变量

使用Session 是非常常见的一种方式。其操作与 Application 相似, 作用与每个用户,个人,

所以 过量的存储Session 会导致服务器内存资源消耗;

a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e)
{

   Session["name"]=TextBox1.Text.trim();

   Server.Transfer("b.aspx");

}

b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{

      string strName = Session["name"].tostring();

      Label1.Text= strName;

}

四、使用Cookie对象变量

这个也是大家常使用的方法,与Session一样 。对用户而言是一样,但是本质上是有区别的,

Cookie 是存储在客户端的。 而Session 是放在 服务器端的。

而且 Cookie 的使用,要配合ASP.NET 的内置对象Rquest ,Response
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{

 // HttpCookie() 有两个带参数的重载函数 HttpCookie(string name) , HttpCookie(string name,string value)

   HttpCookie cookie_name = new HttpCookie("name");  

   cookie_name .value = Label1.Text; //设置cookie 的值

   Response.AppendCookie(cookie_name);

   Server.Transfer("b.aspx");

}

 

b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{

  // Request.Cookie  是从客户端获取传来的 Cookie 集合, 

  string str_name = Request.Cookie["name"].Value.ToString();

}

五、使用Server.Transfer方法  Server.Transfer();

Server.Transfer 才是面向对象开发所使用的方法,使用 Server.Transfer() 方法 把 流程,从当前页面引导到另一个页面。

跳转的新页面使用 前一个页面的应答流程,所以这个方法 是完全面向对象的, 简洁有效。

 a.aspx的C#代码
public string Name
{

    get{

             return Label1.Text;

        }

}

private void Button1_Click(object sender, System.EventArgs e)
{
     Server.Transfer("b.aspx");
}

b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{

   a newWeb;   //实例a.aspx 窗体

  newWeb = (source)Context.Handler;

  string name=newWeb.Name;

}

posted @ 2011-12-20 14:04  BlackAnts  阅读(229)  评论(0)    收藏  举报