ASP.NET 跨页面传值的技巧
一、使用QueryString 变量
QueryString 是一种非常简便的传值方式,他可以将传递的值显示在地址栏中。
如果传递一个或多个安全性不高,结构要求不高的数值时,可以用QueryString, 因为安全性比较低,所以慎用。
如果像传递 数组、对象,就不能使用QueryString 了。
例子:
home.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
string str_url;
str_url="index.aspx?name="+ Label1.Text;
Response.Redirect(str_url);
}
index.aspx c#代码
private void Page_Load(object sender, EventArgs e)
{
string strName=Request.QueryString["name"];
TextBox1.Text=strName;
}
二、使用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)
{
//在使用 Application 获取传值时,必须得解锁,然后锁上,如:
Application.Lock();
string strname =Application["name"].Tostring();
Application.UnLock();
}
三、使用 Session 变量
使用Session 是非常常见的一种方式。其操作与 Application 相似, 作用与每个用户,个人,
所以 过量的存储Session 会导致服务器内存资源消耗;
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"]=TextBox1.Text.trim();
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string strName = Session["name"].tostring();
Label1.Text= strName;
}
四、使用Cookie对象变量
这个也是大家常使用的方法,与Session一样 。对用户而言是一样,但是本质上是有区别的,
Cookie 是存储在客户端的。 而Session 是放在 服务器端的。
而且 Cookie 的使用,要配合ASP.NET 的内置对象Rquest ,Response
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
// HttpCookie() 有两个带参数的重载函数 HttpCookie(string name) , HttpCookie(string name,string value)
HttpCookie cookie_name = new HttpCookie("name");
cookie_name .value = Label1.Text; //设置cookie 的值
Response.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
// Request.Cookie 是从客户端获取传来的 Cookie 集合,
string str_name = Request.Cookie["name"].Value.ToString();
}
五、使用Server.Transfer方法 Server.Transfer();
Server.Transfer 才是面向对象开发所使用的方法,使用 Server.Transfer() 方法 把 流程,从当前页面引导到另一个页面。
跳转的新页面使用 前一个页面的应答流程,所以这个方法 是完全面向对象的, 简洁有效。
a.aspx的C#代码
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 newWeb; //实例a.aspx 窗体
newWeb = (source)Context.Handler;
string name=newWeb.Name;
}

浙公网安备 33010602011771号