一.Session
Session 变量存储在服务器端 ,缺点:asp.net中有失效的隐患,有效期:用户活动时间+自定义延迟,适用范围:单个用户、整个站点所有页面。
example:
在webform1.aspx中
private void Button1_Click(object sender,System.EventArgs e)
{
Session["name"] = TextBox1.Text;
Session["email"] = TextBox2.Text;
Response.Redirect("webform2.aspx");
}
在webform2.aspx中
private void Page_Load(object sender,System.EventArgs e)
{
Label1.Text = Session["name"].ToString();
Label2.Text - Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}运行,即可看到传递后的结果了
二Cookie
Cookie是存放在客户端的 。而且Cookie的使用要配合ASP.NET内置对象Request来使用,每次输入网址请求页面是,服务器站点都会把Cookie
下载到客户端,下一次再访问该站点的时候,客户端会一起把网址和本地的相应Cookie一起上传的服务器端。
Webform1.aspx 中
private void Button1.Click(object sender,System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.cookie.add(cookie_name);
Server.Transfer("Webform2.aspx");
}
在Webform2.aspx中
private void Page_Load(object sendet,EventArgs e)
{
string name;
name = Request.Cookie["name"].Value.ToString();
}
三.
使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}
四.使用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)
{
string name;
Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
}
五.Server.TransferResponse是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果。Response.Redirect()需要在服务器和客户端往返两次,而Server.Transfer()在服务器端一次通信即可
public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}
然后调用Server.Transfer方法
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
}
(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;
//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}