asp.net页面传值的几种方法比较

1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了,下面是一个例子。

private void Button1_Click(object sender, System.EventArgs e)

{

string surl;//定义一个字符串用来存储跳转的页面和所要传递的数值

surl = "hello.aspx?name=" + Label1.Text;

Response.Redirect(surl);//跳转页面

}

hello.aspx中C#代码

private void Page_Load(object sender, EventArgs e)

{

Label2.Text = Request.QueryString["name"];//用控件取得并显示上一个页面传递的数值

}

2.session这种方法将每份数据存储于服务器变量中,可以传递比较多的数据,并且安全性较高,所以常用于用户身份的验证功能中。不过,Session变量如果存储过多的数据会消耗过多的服务器资源,编程者在使用时应该慎重,其使用方法如以下代码所示。

word.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = Label.Text;//把控件的值传入session中
}
hello.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Session["name"].ToString();//取出session的值并赋值给字符串name

}

3.Cookie是一种比较特殊的数据存储方式,因为这种方式将数据存储于浏览用户的电脑中,以文本文件的形式存在于磁盘中。这种方式非常有意思,很多登录系统就是利用Cookie实现用户自动登录。即用户登录一次的登录信息将被写入到用户电脑的Cookie文件中,下次登录时,网站自动读取该Cookie完成身份验证。通过Cookie传递数据虽然很方便,保存时间可以自由设置,但是安全性不高,编程者不应过于依赖Cookie,而应采用结合的方式完成敏感数据的存储。其使用方法如以下代码所示。

word.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{

//创建新的cookie并传值
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("hello.aspx");//跳转页面到hello.aspx
}
hello.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Request.Cookie["name"].Value.ToString();//取出cookie中的值赋值给name
}

4.Server.Transfer这个方法的步骤相对较多,使用该方法编程者可以在另一个页面以公开对象属性的方式来存取值,使用这种方法是面向对象的。该方法的代码编写并不复杂,首先通过定义一个public权限的属性,该属性可返回所需传递的值。然后在第两个页面中,使用Context.Handler属性来获得前一个页面实例对象的引用,即可通过访问自定义的属性获取需要的值。其使用方法如以下代码所示。

word.aspx的C#代码
public string Name
{
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("hello.aspx");//页面跳转
}
hello.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
word newWeb; //实例word窗体
newWeb = (word)Context.Handler;
string name;
name = newWeb.Name;
}

5.Application严格地说应该是通过HttpApplication对象在服务器端生成一个状态变量来存储所需的信息,该HttpApplication对象变量的可用范围覆盖整个WEB应用程序。所以该对象一般存储一些要公布的信息,如在线人数等,而对于那些涉及用户个人的敏感数据则不用这种方法存储。其使用方法如以下代码所示。

word.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text;//把控件的值传入Application
Server.Transfer("hello.aspx");//页面跳转
}
hello.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
Application.Lock();//锁定防止另外的程序运用
name = Application["name"].ToString();
Application.UnLock();//解锁
}

posted on 2013-05-20 10:15  我爱欣欣  阅读(199)  评论(0)    收藏  举报

导航