日期:2014-05-17  浏览次数:20964 次

ASP.NET中页面间传值方法总结

在ASP.NET网络编程中经常需要处理上一个页面向下一个页面传递数量不等的各种数据。下面利用Microsoft Visual Studio  2008  C#介绍六种页面传值方式。1、通过用QueryString来传送相应的值;2、通过session变量来传送相应的值;3、通过Server.Transfer方法来实现;4、是利用Cookie传送页面间相应的值;5、 PostBackUrl()方法;6、利用类来传递页面的值。


一、使用Querystring

QueryString是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象类型的值。如果你想传递一个安全性不太重要或者是一个简单的数值时,用此方法最好不过了。下面的实例演示完成传值工作。

1、创建一个Web页面,命名为Default1.aspx

2、在新建的Default1中放置一个Button1,在放置两个TextBox1,TextBox2

3、Button按钮创建click事件代码如下:
protected void Button1_Click(object sender, EventArgs e)

{

  string url;

  url="Default2.aspx?name="+TextBox1.Text + "&pwd="+TextBox2.Text;

  Response.Redirect(url);

}
4、新建另一个Web页面,命名为Default2.aspx

5、在Default2中放置两个Label1,Label2

在Default2.aspx.cs的Page_Load中添加如下代码:

protected void Page_Load(object sender, EventArgs e)

{

   Label1.Text=Request.QueryString["name"].ToString();

   Label2.Text=Request.QueryString["pwd"].ToString();

}

运行,即可看到传递后的结果了。





二、使用Session变量

使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值Remove后,变量才会消失。

演示示例如下:

1、创建一个Web页面,命名为Default1.aspx

2、在新建的Default1中放置一个Button1,在放置两个TextBox1,TextBox2

3、为Button1按钮创建Click事件代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

   Session["Name"]=TextBox1.Text;

   Session["Pwd"]=TextBox2.Text;

   Response.Redirect("Default2.aspx");

}
4、新建另一个目标页面命名为Default2 .aspx

5、在Default2页面中放置两个Label1,Label2标签。

在Default2.aspx.cs的Page_Load中添加如下代码:

protected void Page_Load(object sender, EventArgs e)

{

   Label1.Text=Session["Name"].ToString();

   Label2.Text=Session["Pwd"].ToString();

  // Session.Remove("Name");

  // Session.Remove("Pwd");

}
运行后即可看到传递后的结果了。





三、使用Server.Transfer

演示示例如下:

1、创建一个Web页面,命名为Default1.aspx

2、在新建的Default1中放置一个Button1,在放置两个TextBox1,TextBox2

3、Button1按钮创建Click事件代码如下:

protected  void Button1_Click(object sender, EventArgs e)

{

   Server.Transfer("Default2.aspx");

}
4、在Default1.aspx.cs中创建两属性 Name, Pwd来存储TextBox1,TextBox2控件的值,代码如下:

public partial class Default1 : System.Web.UI.Page

{

   public String Name

    {

        get

        {

            return this.TextBox1.Text;

        }

    }

 

    public string Pwd

    {

        get

        {

            return this.TextBox2.Text;

        }

    }

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

        Server.Transfer("Default2.aspx");

    }

}
5、新建另一个目标页面命名为Default2.aspx

6、在Default2中放置两个Label1,Label2  标签控件。

在Default2.aspx.cs的Page_Load中添加如下代码:

protected void Page_Load(object sender, EventArgs e)

{
     if (!IsPostBack)

     {

            Default1 myver;

            myver = (Default1)Context.Handler;

            this.Label1.Text=myver.Name;

            this.Label2.Text = myver.Pwd;

     }

}




四、 使用Cookie对象变量

这个也是大家常使用的方法,与Session相比,Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

1、在Default1.aspx创建一个文本框TextBox1和一个按钮控件Button1。

2、在Default1.aspx.cs中添加下如代码

protected void Button1_Click(object sender, EventArgs e)

    {

        HttpCookie cookie_name = new HttpCookie("myname");

        cookie_name.Value = this.TextBox1.Text;

        Response.AppendCookie(cookie_name);

        Server.Transfer("Default2.aspx");
}