关于asp.net页面间的传值 2008-08-05 11:17
1.使用QueryString变量
QueryString是一种非常简单的传值方式,它可以将传送的值显示在浏览器的地址栏中,.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了,使用这种方法的步骤如下:
1,使用控件创建web表单(form)
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量
4,在保存的URL里添加QueryString参数
5,使用Response.Redirect重定向到上面保存的URL
下面是一具例子:
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"];
}
2.使用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();
}
3.使用Session 变量
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下:
1,在页面里添加必要的控件
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里
4,使用Response.Redirect方法重定向到另一个页面
5,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它
示例代码
a.aspx的C#代码
private void Button1_Click(object sender,System.EventArgs e)
{
Session["name"]=Label.Text;
}
b.aspx中的C#代码
private void Page_Load(object sender,EventArgs e)
{
string name;
name=Session["name"].ToString();
Session.Remove("name");
}
4.使用Cookie对象变量
这个也是大家常使用的方法,与Session一样,其对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的,而且Cookie的使用要配合ASp.NET内置对象Request来使用
a.aspx的c#代码
private void Button1_Click(object sender,System.EventArgs e)
{
HttpCookie cookie_name=new HttpCookie("name");
cookie_name.Value=Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}
b.aspx中的C#代码
private void Page_Load(object sender,EventArgs e)
{
string name;
name=Request.Cookie["name"].Value.ToString();
}
5.使用Server.Transfer方法
这个才可以是面向对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法完全面向对象的,简洁有效。使用这种方法的整个过程如下:
1,在页面里添加必要的控件
2,创建返回值的Get属性过程
3,创建可以返回表单的按钮和链接按钮
4,在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
5,在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了
示例代码:
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 new Web//实例a窗体
newWeb=(source)Context.Handler;
string name;
name=newWeb.Name;
}