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.aspxprotected void Button1_Click(object sender, EventArgs e){ Session["Name"]=TextBox1.Text; Session["Pwd"]=TextBox2.Text; Response.Redirect("Default2.aspx");}4、新建另一个目标页面命名为Default2 .aspxprotected void Page_Load(object sender, EventArgs e){ Label1.Text=Session["Name"].ToString(); Label2.Text=Session["Pwd"].ToString(); // Session.Remove("Name"); // Session.Remove("Pwd");}运行后即可看到传递后的结果了。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.aspxprotected 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; }} 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");}protected void Page_Load(object sender, EventArgs e){this.Label1.Text = Request.Cookies["myname"].Value.ToString();} protected void Page_Load(object sender, EventArgs e){ if (PreviousPage != null) { TextBox textbox = (TextBox)this.PreviousPage.FindControl("TextBox1"); Response.Write(textbox.Text); } } public class UserInfo{ public UserInfo() { // //TODO: 在此处添加构造函数逻辑 // } private TextBox textName; public TextBox TextName { get { return textName; } set { textName = value; } } private TextBox textPwd; public TextBox TextPwd { get { return textPwd; } set { textPwd = value; } } private TextBox textEmail; public TextBox TextEmail { get { return textEmail; } set { textEmail = value; } }}2、在页面Default1.aspx中创建三个文本框和一个按钮,TextBox1,TextBox2,TextBox3三个文本框的ID分别为:TextName,TextPwd ,TextEmail代码见下面: public UserInfo myyInfo { get { UserInfo info = new UserInfo(); info.TextName = TextName; info.TextPwd = TextPwd; info.TextEmail = TextEmail; return info; } } protected void Button1_Click(object sender, EventArgs e) { this.Button1.PostBackUrl = "~/Default2.aspx"; } protected void Page_Load(object sender, EventArgs e){ UserInfo myInfo = PreviousPage.myyInfo; Label1.Text = myInfo.TextName.Text; Label2.Text = myInfo.TextPwd.Text; Label3.Text = myInfo.TextEmail.Text;}