ASP.NET頁面間資料傳遞小結

來源:互聯網
上載者:User
asp.net|資料|頁面

  ASP.NET較ASP最大的優點,也是其受到越來越多程式員的歡迎的主要原因就是,ASP.NET為開發人員提供了事件驅動的開發模式,從此程式員可以像利用可視化編程工具開發Windows應用程式一樣來開發ASP.NET的基於Web頁面的應用程式了。

  一般稍微龐大的ASP.NET程式至少擁有二個或以上的Web頁面,程式員在開發類似ASP.NET應用程式時一般都需要處理在多個Web頁面傳遞資料的問題。我們知道ASP.NET程式中的各個Web頁面類似於Windows應用程式中的Form表單,但ASP.NET程式中的各Web的組織圖比起Windows應用程式中各Form表單要顯得鬆散許多。Windows應用程式中的各Form表單間資料傳遞可以通過定義全域變數(Public static 變數)等方法來實現。而這些方法卻無法用以ASP.NET中各Web頁面資料傳遞,所以就必須尋找另外的方法。本文就來介紹二種可以實現ASP.NET中各Web頁面資料傳遞的方法:第一種方法是使用QueryString,第二種方法是使用Session。

  一.本文程式設計和啟動並執行軟體環境

  (1).微軟公司視窗2000伺服器版。

  (2).Visual Studio .Net正式版,.Net FrameWork SDK版本號碼3705。

  二.使用QueryString實現Web頁面間資料傳遞:

  QueryString實現Web頁面間傳遞資料是一種比較老的方法,在ASP時就是使用這種方法實現不同Web頁面間資料傳遞的。這種方法的最大的優點就是簡單,但其缺點也是非常明顯的,就是其安全性比較差,具體表現在從源頁面向目標頁面傳遞資料時,頁面間傳遞的資料將會顯現在目標頁面的地址欄中,具體可見圖05中的地址欄。還有使用QueryString只能在頁面間傳遞數量有限的資料,並且不可以傳遞Object類型的資料。以下就是ASP.NET頁面間資料傳遞的具體實現步驟,所使用的開發工具是Visual Studio .Net,開發語言是C#。實現的功能是把源頁面(WebForm1.aspx)中的二個TextBox中的資料傳遞到目標頁面中,並通過目標頁面(WebForm2.aspx)中的二個Label顯示從源頁面中傳遞來的資料:

  1. 啟動Visual Studio .Net。

  2. 選擇菜單【檔案】|【建立】|【項目】後,彈出【建立項目】對話方塊。

  3. 將【項目類型】設定為【Visual C#項目】。

  4. 將【模板】設定為【ASP.NET Web 應用程式】。

  5. 在【位置】的文字框中輸入"http://localhost/WebApplication4"。然後單擊【確定】按鈕,這樣在Visual Studio .Net就會在當前專案檔所在目錄中建立一個名稱為"WebApplication4"檔案夾,裡面存放是此項目的專案檔,項目中的其他檔案存放的位置是電腦Internet資訊服務的預設的Web網站所在的目錄中建立的一個名稱為"WebApplication4"的檔案夾中。具體如圖01所示:


圖01:建立一個ASP.NET項目對話方塊

  6. 單擊菜單【項目】|【添加Web表單】,則彈出的【添加新項】對話方塊,將對話方塊【模板】設定為【Web表單】,在【名稱】文字框中輸入"WebForm2.aspx"後單擊【開啟】按鈕,則在此項目中加入另外一個新的表單"WebForm2.aspx",具體如圖02所示:


圖02:【添加新項】對話方塊

7. 把Visual Studio .Net的當前版面設定為WebForm1.aspx頁面的設計介面,並從【工具箱】中的【Web表單】選項卡中往WebForm1.aspx頁面中拖入下列組件,並執行相應的操作:

  二個TextBox組件,分別用來輸入向目標表單傳遞的資料。

  一個Button組件,用以實現源頁面向目標頁面傳遞資料,並在這個Button組件拖入WebForm1.aspx設計頁面後,雙擊它,則系統會在WebForm1.aspx..cs檔案中自動產生這個組件的Click事件對應的處理代碼。WebForm1.aspx設計後的頁面如圖03所示:


圖03:WebForm1.aspx設計後的頁面

  8. 把Visual Studio .Net的當前版面設定為WebForm2.aspx頁面的設計介面,並從【工具箱】中的【Web表單】選項卡中往WebForm2.aspx頁面中拖入下列組件,並執行相應的操作:

  二個Label組件,用以顯示源頁面向目標頁面傳遞的資料。

  雙擊WebForm2.aspx設計頁面,則系統會在WebForm2.aspx..cs檔案中自動Page頁面的Load事件對應的處理代碼。程式將在此事件中接收源頁面向目標頁面傳遞來的資料,並通過Lable組件顯示出來。WebForm2.aspx設計後的頁面如圖04所示:


圖04:WebForm2.aspx設計後的頁面

  9. 把Visual Studio .Net的當前視窗切換到WebForm1頁面的代碼編輯視窗,即:WebForm1.aspx.cs檔案的編輯視窗。用下列代碼替換WebForm1.aspx.cs中的Button1組件的Click事件對應的處理代碼,下列代碼的功能是實現源頁面向目標頁面傳遞資料:

private void Button1_Click ( object sender , System . EventArgs e )
{
string sUrl;
//定義一個字串,此字串中包含源頁面向目標傳遞的資料
sUrl = "WebForm2.aspx?name=" +
TextBox1 . Text + "&email=" +
TextBox2 . Text ;
//從源頁面中獲得傳遞的資料
Response . Redirect ( sUrl ) ;
//向目標頁面傳遞資料
}

  10. 把Visual Studio .Net的當前視窗切換到WebForm2頁面的代碼編輯視窗,即:WebForm2.aspx.cs檔案的編輯視窗。用下列代碼替換WebForm2.aspx.cs中Page的Load事件對應的處理代碼,下列代碼的功能是從源頁面中接收資料,並通過相應組件顯示接收到的資料:

private void Page_Load ( object sender , System . EventArgs e )
{
Label1 . Text = Request . QueryString [ "name" ] ;
//使用QueryString從源頁面中接收name變數資料,並通過Label1顯示
Label2 . Text = Request . QueryString [ "email" ] ;
//使用QueryString從源頁面中接收email變數資料,並通過Label2顯示
// 在此處放置使用者代碼以初始化頁面
}

  11. 至此第一種實現ASP.NET頁面間資料傳遞的方法就介紹完了,此時單擊快速鍵【F5】運行程式,並在第一個頁面中二個TextBox組件分別輸入"阿虎"、"ahah@etang.com "後,具體如圖05所示,再單擊頁面中的Button1按鈕,則會得到圖06所示的頁面,可見的確把源頁面中的資料傳遞到了目標頁面中:


圖05:運行頁面01


圖06:運行頁面02

  三.使用Session實現Web頁面間資料傳遞:

  Session會話是編寫網頁時經常遇到的概念,使用Session傳遞資料雖然可以克服在使用QueryString時的缺點,但大量的使用則有可能導致伺服器的癱瘓,尤其是瀏覽量非常大的頁面,使用Session就尤其要注意。解決的辦法就是Session使用結束後,必須清除。以下就是在ASP.NET中使用Session傳遞資料的一般步驟,使用的開發工具是Visual Studio .Net,語言是C#:

  1. 啟動Visual Studio .Net。

  2. 選擇菜單【檔案】|【建立】|【項目】後,彈出【建立項目】對話方塊。

  3. 將【項目類型】設定為【Visual C#項目】。

  4. 將【模板】設定為【ASP.NET Web 應用程式】。

  5. 在【位置】的文字框中輸入"http://localhost/session"。然後單擊【確定】按鈕,這樣在Visual Studio .Net就會在當前專案檔所在目錄中建立一個名稱為"session"檔案夾,裡面存放是此項目的專案檔,項目中的其他檔案存放的位置是電腦Internet資訊服務的預設的Web網站所在的目錄中建立的一個名稱為"session"的檔案夾中。具體如圖07所示:


圖07:建立一個ASP.NET項目對話方塊

  6. 按照QueryString實現步驟中的第六步來操作,在session項目中建立一個Web頁面,名稱為"WebForm2.aspx"。

  7. 按照QueryString實現步驟中的第七步來操作,在WebForm1.aspx頁面中建立二個TextBox組件、一個Button組件,並在WebForm1.aspx.cs中建立此Button組件的Click事件對應的處理代碼。

  8. 按照QueryString實現步驟中的第八步來操作,在WebForm2.aspx頁面中建立二個Label組件,並在WebForm2.aspx.cs中建立此Page頁面的Load事件對應的處理代碼。

  9. 把Visual Studio .Net的當前視窗切換到WebForm1頁面的代碼編輯視窗,即:WebForm1.aspx.cs檔案的編輯視窗。用下列代碼替換WebForm1.aspx.cs中的Button1組件的Click事件對應的處理代碼,下列代碼的功能是使用Session實現源頁面向目標頁面傳遞資料:

private void Button1_Click ( object sender , System . EventArgs e )
{
Session [ "name" ] = TextBox1 . Text ;
//建立Session變數,用以存放TextBox1組件中的資料
Session [ "email" ] = TextBox2 . Text ;
//建立Session變數,用以存放TextBox2組件中的資料
Server . Transfer ( "WebForm2.aspx" ) ;
//向目標頁面傳遞資料,如果你是其他頁面則替換上面的WebForm2.aspx
}

  10. 把Visual Studio .Net的當前視窗切換到WebForm2頁面的代碼編輯視窗,即:WebForm2.aspx.cs檔案的編輯視窗。用下列代碼替換WebForm2.aspx.cs中Page的Load事件對應的處理代碼,下列代碼的功能是從源頁面中接收資料,並通過相應組件顯示接收到的資料,並清除建立的Session變數:

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" ) ;
//清除建立的Session的變數
// 在此處放置使用者代碼以初始化頁面
}

  11. 至此在ASP.NET使用Session實現Web頁面間資料傳遞的方法就介紹完了,此時單擊快速鍵【F5】運行程式就可以得到如圖05和圖06所示的運行介面。

   四.總結:

  本文介紹了二種在ASP.NET這實現Web頁面間資料傳遞的方法,即:QueryString和Session。這二種方法可由千秋又各自擁有無法克服的缺點。總結起來就是QueryString相當簡單,Session相對複雜;QueryString安全性差,Session安全性高;QueryString可實現各Web頁面簡單資料傳遞,一般就是字串類型,Session可實現各Web頁面間複雜類型資料的傳遞等等。當然在ASP.NET中實現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.