第一种传值的方式:QueryString
基本介绍:使用querystring在页面间传值已经是一种很老的机制,这种方法的主要优点是实现起来非常简单。然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是传递的值少并且安全性不高的情况下,这个犯法还是一个不存的方案。
第一部分:
Default.aspx中的html文件:
<div>
<br />
我是第一个页面<br />
name :<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
email:<asp:TextBox ID="TextBox2" runat="server" Height="22px"></asp:TextBox>
</div>
<asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="commit" />
<asp:Button ID="Button2" runat="server" οnclick="Button2_Click" Text="reset" />
Default.aspx.cs中的html文件:
//提交
protected void Button1_Click(object sender, EventArgs e)
{
string url;
if (TextBox1.Text != "" && TextBox2.Text != "")
{
url = "anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}
}
//重置
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
}
}
anotherwebform.aspx.cs:
TextBox1.Text = Request.QueryString["name"];
TextBox2.Text = Request.QueryString["email"];
第二种传值的方式:Session变量
基本介绍:
基本原理:使用session变量是可以在页面传递值的另一种方式,在本例中我们把控件中值放在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。
缺点:但是需要注意的是在session变量存储的过多的数据会消耗较多的服务器资源,在使用session是应该慎重,当然了,我们应该用一些清理动作去除一些不需要的seeion来降低资源的无谓消耗。
起始页面:
//第二种方式:session
Session["name"] = TextBox1.Text;
Session["email"] = TextBox2.Text;
Server.Transfer("anotherwebform.aspx");
目的页面:
TextBox1.Text = Session["name"].ToString();
TextBox2.Text = Session["email"].ToString();
//将变量清空
Session.Remove("name");
Session.Remove("email");
第三种传值的方式:使用Cookie对象
Cookie用于在用户浏览器上存储小快的信息,保存用户的相关信息。
比如用户访问某网站是用户的ID,用户的偏好等,用户下次访问就可以通过检索获得以前的信息。
所以cookie也可以在页面间传值。
cookie通过http头在浏览器和服务器之间来回传递的。
cookie只能包含字符串的值,如果现在cookie储存整数值,那么需要先转换为字符串的形式。可以通过遍历request对象的cookie集合可以获得所有的浏览器所有的cookie。
起始:
HttpCookie objCookie = new HttpCookie("myCookie",TextBox1.Text.ToString());
Response.Cookies.Add(objCookie);
目的:
string myName = Request.Cookies["myCookie"].Value;
第四种方式:使用server.Transfer
server.Transfer是从当前的aspx页面转到新的aspx页面,服务器端执行并输出。
在新页面中通过Context.Handler来获得前一个页面传递的各种数据类型的值、表单数据、querystring。
由于重定向完全在服务器端完成,所以客户端浏览器中url地址是不变的,调用server,Tranfer时,当前的aspx页面终止执行,执行流程转入另一个aspx页面,但新的aspx页面仍使用前一个aspx页面创建的应答流。
比较:server.Tranfer、Response.Redirect
1.server.Tranfer在服务器端完成,所以客户端浏览器中的url地址是不会改变的;
reponse.redirect是客户端完成,向服务器端提出的页面处理请求,所以客户端浏览器中的url地址是会改变。
2、server.tranfer在服务器端完成,不需要客户端提出请求,减少了客户端对服务气短提出请求。
3、server.transfer只能够跳转到本地虚拟目录指定的页面,也就是工程项目中的页面,而response.redirect可以跳转到任何url地址
4.server.transfer可以将前一个页面的各种类型的值传到新的页面,response.redirect则只能借助url中带参数或是结合上面的四种办法把各种类型的值转到新的页面。
由于不能打印ArrayList:http://www.360doc.com/content/09/0224/16/74246_2633056.shtml