ASP.NET中頁面傳值技巧

來源:互聯網
上載者:User

  在ASP.NET中有幾種基於頁面間的傳值方法:常見的有QueryString.這種方法最簡單不過了,但缺點就是它把要傳送的值顯示在地址欄中,如果對於在安全性的資訊來說這並不是一種好的解決方案。還有一個缺點就是它不能傳對象。這種方法適合於傳送一個簡單的值及安全性不大重要的資訊。例:
   有兩個頁面:WebForm1.aspx,WebForm2.aspx。
  在WebForm1.aspx.cs的某些事件中放置如下代碼:
  string url="WebForm2.aspx?name="+this.txtname.Text; //注意name與值之間不要有空格,否則會報沒有引用對象的錯誤
  Response.Redirect(url);            
 接著關鍵時刻出現了:在WebForm2.aspx.cs中某些事件中放置如下代碼:
 lblname.Text=Request.QueryString["name"];
 OK! 整個傳值過程完成!

  還有一種是利用Session變數來傳值,這種也比較常用。利用Session比較靈活,可以
在多個頁面間進行傳值。當調用其remove後,Session即失效。同樣用兩張頁面舉個例:
WebForm1.aspx.cs中寫入如下代碼:
Session["name"]=txtname.Text;   
Response.Redirect("WebForm2.aspx");
下面在WebForm1.aspx.cs中取出Session的值:
lblname.Text=Session["name"].ToString(); //因為取出來的是一個對象,所以必須轉換類型
Session.Remove("name");? //使Session失效。                    

  第三種方式是利用Request對象來取值,(註:這裡使用的是html控制項)這種比較簡潔。實現如下:

在WebForm1.aspx中:

Name:

?

在WebForm2.aspx.cs中某個事件寫入:Response.Write(Request.Form["txtname"]);

當點擊submit按鈕後,即通過Request.Form[”txtname”]取出了值,

第四種方法是利用Server對象的Transfer()方法來傳值,它接收一個頁面對象。

下面用代碼來講解一下這種實現方式:

在WebForm1.aspx 的某個事件中寫入如下代碼:Server.Transfer("WebForm2.aspx"); //傳遞頁面對象
接著就可以在WebForm2.aspx.cs中擷取WebForm1的頁面對象。
if(Context.Handler is WebForm1) //判斷傳遞過來的是否WebForm1,因為可能會有多個傳遞對象。    
{                                             
WebForm1 f1=(WebForm1)Context.Handler; //通過Context.Handler來建立一個WebForm1的頁面對象,返 回一個object                                           
Response.Write("Hey,I get it with Context Handler "+((TextBox)f1.FindControl("TextBox1")).Text+"

");??      
}                                              
//最後通過調用WebForm1對象的FinControl()方法來尋找WebForm1中名為"TextBox1"的一個文本控制項,在此也可以換成其它的控制項,不管尋找的是哪一種控制項,都必須將其強制轉換為其類型,本樣本中為TextBox,最後調用其屬性Text,擷取在TextBox1中的值,達到傳值的效果。
  這種方法同樣很靈活,可以傳遞多個頁面對象,而不是傳遞值,因此當擷取到頁面對象的時候就可以擷取此頁面對象中的某些控制項的值或其它的資料。

(註:以上幾種方法,除了Request.Form()這種傳值方法使用的是HTML控制項外,其它幾種都是使用WEB控制項)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.