熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET頁面間數據傳遞小結

2013-11-13 12:23:00  來源: .NET編程 

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

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

  一.本文程序設計和運行的軟件環境

  (微軟公司視窗服務器版

  (Visual Studio Net正式版Net FrameWork SDK版本號

  二.使用QueryString實現Web頁面間數據傳遞

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

   啟動Visual Studio Net

   選擇菜單【文件】|【新建】|【項目】後彈出【新建項目】對話框

   將【項目類型】設置為【Visual C#項目】

   將【模板】設置為【ASPNET Web 應用程序】

   在【位置】的文本框中輸入http://localhost/WebApplication然後單擊【確定】按鈕這樣在Visual Studio Net就會在當前項目文件所在目錄中建立一個名稱為WebApplication文件夾裡面存放是此項目的項目文件項目中的其他文件存放的位置是計算機Internet信息服務的默認的Web站點所在的目錄中新建的一個名稱為WebApplication的文件夾中具體如圖所示


新建一個ASPNET項目對話框

   單擊菜單【項目】|【添加Web窗體】則彈出的【添加新項】對話框將對話框【模板】設置為【Web窗體】在【名稱】文本框中輸入WebFormaspx後單擊【打開】按鈕則在此項目中加入另外一個新的窗體WebFormaspx具體如圖所示


【添加新項】對話框

   把Visual Studio Net的當前頁面設置為WebFormaspx頁面的設計界面並從【工具箱】中的【Web窗體】選項卡中往WebFormaspx頁面中拖入下列組件並執行相應的操作

  二個TextBox組件分別用來輸入向目標窗體傳遞的數據

  一個Button組件用以實現源頁面向目標頁面傳遞數據並在這個Button組件拖入WebFormaspx設計頁面後雙擊它則系統會在WebFormaspxcs文件中自動產生這個組件的Click事件對應的處理代碼WebFormaspx設計後的頁面如圖所示


WebFormaspx設計後的頁面

   把Visual Studio Net的當前頁面設置為WebFormaspx頁面的設計界面並從【工具箱】中的【Web窗體】選項卡中往WebFormaspx頁面中拖入下列組件並執行相應的操作

  二個Label組件用以顯示源頁面向目標頁面傳遞的數據

  雙擊WebFormaspx設計頁面則系統會在WebFormaspxcs文件中自動Page頁面的Load事件對應的處理代碼程序將在此事件中接收源頁面向目標頁面傳遞來的數據並通過Lable組件顯示出來WebFormaspx設計後的頁面如圖所示


WebFormaspx設計後的頁面

   把Visual Studio Net的當前窗口切換到WebForm頁面的代碼編輯窗口WebFormaspxcs文件的編輯窗口用下列代碼替換WebFormaspxcs中的Button組件的Click事件對應的處理代碼下列代碼的功能是實現源頁面向目標頁面傳遞數據

private void Button_Click ( object sender System EventArgs e )
{
string sUrl;
//定義一個字符串此字符串中包含源頁面向目標傳遞的數據
sUrl = WebFormaspx?name= +
TextBox Text + &email= +
TextBox Text ;
//從源頁面中獲得傳遞的數據
Response Redirect ( sUrl ) ;
//向目標頁面傳遞數據
}

   把Visual Studio Net的當前窗口切換到WebForm頁面的代碼編輯窗口WebFormaspxcs文件的編輯窗口用下列代碼替換WebFormaspxcs中Page的Load事件對應的處理代碼下列代碼的功能是從源頁面中接收數據並通過相應組件顯示接收到的數據

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

   至此第一種實現ASPNET頁面間數據傳遞的方法就介紹完了此時單擊快捷鍵【F】運行程序並在第一個頁面中二個TextBox組件分別輸入阿虎ahah@etangcom 具體如圖所示再單擊頁面中的Button按鈕則會得到圖所示的頁面可見的確把源頁面中的數據傳遞到了目標頁面中


運行頁面


運行頁面

  三.使用Session實現Web頁面間數據傳遞

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

   啟動Visual Studio Net

   選擇菜單【文件】|【新建】|【項目】後彈出【新建項目】對話框

   將【項目類型】設置為【Visual C#項目】

   將【模板】設置為【ASPNET Web 應用程序】

   在【位置】的文本框中輸入http://localhost/session然後單擊【確定】按鈕這樣在Visual Studio Net就會在當前項目文件所在目錄中建立一個名稱為session文件夾裡面存放是此項目的項目文件項目中的其他文件存放的位置是計算機Internet信息服務的默認的Web站點所在的目錄中新建的一個名稱為session的文件夾中具體如圖所示


新建一個ASPNET項目對話框

   按照QueryString實現步驟中的第六步來操作在session項目中新建一個Web頁面名稱為WebFormaspx

   按照QueryString實現步驟中的第七步來操作在WebFormaspx頁面中創建二個TextBox組件一個Button組件並在WebFormaspxcs中創建此Button組件的Click事件對應的處理代碼

   按照QueryString實現步驟中的第八步來操作在WebFormaspx頁面中創建二個Label組件並在WebFormaspxcs中創建此Page頁面的Load事件對應的處理代碼

   把Visual Studio Net的當前窗口切換到WebForm頁面的代碼編輯窗口WebFormaspxcs文件的編輯窗口用下列代碼替換WebFormaspxcs中的Button組件的Click事件對應的處理代碼下列代碼的功能是使用Session實現源頁面向目標頁面傳遞數據

private void Button_Click ( object sender System EventArgs e )
{
Session [ name ] = TextBox Text ;
//創建Session變量用以存放TextBox組件中的數據
Session [ email ] = TextBox Text ;
//創建Session變量用以存放TextBox組件中的數據
Server Transfer ( WebFormaspx ) ;
//向目標頁面傳遞數據如果你是其他頁面則替換上面的WebFormaspx
}

   把Visual Studio Net的當前窗口切換到WebForm頁面的代碼編輯窗口WebFormaspxcs文件的編輯窗口用下列代碼替換WebFormaspxcs中Page的Load事件對應的處理代碼下列代碼的功能是從源頁面中接收數據並通過相應組件顯示接收到的數據並清除創建的Session變量

private void Page_Load ( object sender System EventArgs e )
{
Label Text = Session [ name ] ToString ( ) ;
Label Text = Session [ email ] ToString ( ) ;
//從源頁面中接收數據顯示出來
Session Remove ( name ) ;
Session Remove ( email ) ;
//清除創建的Session的變量
// 在此處放置用戶代碼以初始化頁面
}

   至此在ASPNET使用Session實現Web頁面間數據傳遞的方法就介紹完了此時單擊快捷鍵【F】運行程序就可以得到如圖和圖所示的運行界面

  四.總結

  本文介紹了二種在ASPNET這實現Web頁面間數據傳遞的方法QueryString和Session這二種方法可由千秋又各自擁有無法克服的缺點總結起來就是QueryString相當簡單Session相對復雜QueryString安全性差Session安全性高QueryString可實現各Web頁面簡單數據傳遞一般就是字符串類型Session可實現各Web頁面間復雜類型數據的傳遞等等當然在ASPNET中實現Web頁面數據傳遞的方法除了上述方法肯定還可能存在其他更好更簡單的如有機會希望能夠共同探討


From:http://tw.wingwit.com/Article/program/net/201311/15788.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.