ASP.Net页面间变量值传递的方法

转自森大科技官方博客:http://www.cnsendblog.com/?p=78web

第一种方法:经过URL连接地址传递
send.aspx:  浏览器

protected void Button1_Click(object sender, EventArgs e)
{
Request.Redirect("Default2.aspx?username=honge");
}安全


receive.aspx: 服务器

string username = Request.QueryString["username"];session


  第二种方法:经过post方式
receive.aspx:asp.net

string username = Ruquest.Form["receive"];post


  第三种方法:经过session方式
send.aspx:url

protected void Button1_Click(object sender, EventArgs e)
{
Session["username"] = "honge";
Request.Redirect("Default2.aspx");
}spa


receive.aspx: .net

string username = Session["username"];


  第四种方法:经过Application方式
send.aspx:

protected void Button1_Click(object sender, EventArgs e)
{   
Application["username"] = "honge";        
Request.Redirect("Default2.aspx");
}



receive.aspx: 

string username = Application["username"];


 
  

 

 

 

第五种方法:经过Server.Transfer方式

send.aspx:  

public string Name  
{        
get
{      
return "honge";     
}  
}    
protected void Button1_Click(object sender, EventArgs e)   
{        
Server.Transfer("Default2.aspx");   
}

 
receive.aspx:  

send d = Context.Handler as send ;       
if (d != null)        
{          
Response.Write(d.Name);       
}


  若是在asp.net 2.0中还能够这样用:经过PreviousPage方式

PreviousPage d = Context.Handler as PreviousPage ;
if (d != null)
{
Response.Write(d.Name);
}



  也能够这样用:

send.aspx:receive.aspx:string name = PreviousPage.Name;


  若是你的页面中用到了MasterPage的话,Server.Transfer传递的PreviousPage就无效了,不知道这是什么缘由。因此在用到MasterPage的话,最好用Session或是Context.Items["username"]来实现。

  使用QueryString

  使用QuerySting在页面间传递值已是一种很老的机制了,这种方法的主要优势是实现起来很是简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,可是在传递的值少而安全性要求不高的状况下,这个方法仍是一个不错的方案。使用这种方法的步骤以下:

  一、使用控件建立web表单(form)
  二、建立能够返回表单的按钮和连接按钮
  三、在按钮或连接按钮的单击事件里建立一个保存URL的字符变量
  四、在保存的URL里添加QueryString参数
  五、使用Response.Redirect重定向到上面保存的URL

  下面的代码片段演示了如何实现这个方法:
  源页面代码:

private void Button1_Click(object sender, System.EventArgs e) 
{
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; 
Response.Redirect(url);
}


 
  目标页面代码:

private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}


 
  使用Session变量

  使用Session变量是能够在页面间传递值的的另外一种方式,在本例中咱们把控件中的值存在Session变量中,而后在另外一个页面中使用它,以不一样页面间实现值传递的目的。可是,须要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,固然了,咱们也应该使用一些清理动做来去除一些不须要的session来下降资源的无谓消耗。使用Session变量传递值的通常步骤以下:

  一、在页面里添加必要的控件
  二、建立能够返回表单的按钮和连接按钮
  三、在按钮或连接按钮的单击事件里,把控件的值添加到session变量里
  四、使用Response.Redirect方法重定向到另外一个页面
  五、在另外一个页面提取session的值,在肯定不须要使用该session时,要显式清除它

  下面的代码片段演示了如何实现这个方法:

  源页面代码:

private void Button1_Click(object sender, System.EventArgs e) 
{
file://textbox1 and textbox2 are webform
file://controls
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("anotherwebform.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");
}



  使用Server.Transfer
  
  这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中倒是特别有用的,使用该方法你能够在另外一个页面以对象属性的方式来存取显露的值,固然了,使用这种方法,你须要额外写一些代码以建立一些属性以即可以在另外一个页面访问它,可是,这个方式带来的好处也是显而易见的。整体来讲,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程以下:
  一、在页面里添加必要的控件
  二、建立返回值的Get属性过程
  三、建立能够返回表单的按钮和连接按钮
  四、在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
  五、在第二个页面中,咱们就可使用Context.Handler属性来得到前一个页面实例对象的引用,经过它,就可使用存取前一个页面的控件的值了

  如下代码综合实现上述步骤过程的代码:
  源页面代码:
  把如下的代码添加到页面中

 

 

 

 

 

 

 

 

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");
}


 
  目标页面代码:

private void Page_Load(object sender, System.EventArgs e)  {file://create instance of source web form WebForm1 wf1; file://get reference to current handler instance wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; Label2.Text=wf1.EMail; }

相关文章
相关标签/搜索