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

相關文章
相關標籤/搜索