关于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;

}

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
网易公司版权所有 ©1997-2009