0、引言
Web 頁面是無狀態的, 服務器對每一次請求都認為來自不同用戶,因此,變量的狀態在連續對同一頁面的多次請求之間或在頁面跳轉時不會被保留。在用Asp.NET 設計開發一個Web系統時, 遇到一個重要的問題是如何保證數據在頁面間進行正確、安全和高效地傳送,Asp.net 提供了狀態管理等多種技術來解決保存和傳遞數據問題,以下來探討.NET 下的解決此問題的各種方法和各自的適用場合。
1、數據傳遞的各種方法和分析
1.1 使用Querystring 方法
QueryString 也叫查詢字符串, 這種方法將要傳遞的數據附加在網頁地址(URL)后面進行傳遞。如頁面A.aspx 跳轉到頁面B.aspx,可以用Request.Redirect("B.aspx?參數名稱=參數值")方法,也可以用超鏈接:,頁面跳轉后,在目標頁面中可用Ruquest["參數名稱"]來接收參數。使用QuerySting 方法的
1.2 利用隱藏域
隱藏域不會顯示在用戶的瀏覽器中, 一般是在頁面中加入一個隱藏控件, 與服務器進行交互時把值賦給隱藏控件并提交給下一頁面。隱藏域可以是任何存儲在網頁中的與網頁有關的信息的存儲庫。使用隱藏域存入數值時用:hidden 控件.value=數值,取出接收數值時用:變量=hidden 控件.value。使用隱藏域的優點是實現簡單, 隱藏域是標準的HTML 控件,不需要復雜的編程邏輯。隱藏域在頁上存儲和讀取,不需要任何服務器資源,幾乎所有瀏覽器和客戶端設備都支持具有隱藏域的窗體。缺點是存儲結構少,僅僅支持簡單的數據結構,存儲量少,因為它被存儲在頁面本身,所以無法存儲較大的值,而且大的數據量會受到防火墻和代理的阻止。
1.3 ViewState
ViewState 是由ASP.NET 頁面框架管理的一個隱藏的窗體字段。當ASP.NET 執行某個頁面時,該頁面上的ViewState 值和所有控件將被收集并格式化成一個編碼字符串, 然后被分配給隱藏窗體字段的值屬性。使用ViewState 傳遞數據時可用:ViewState [" 變量名"]=數值,在取出數據時用:變量=ViewState["變量名"]。使用ViewState 的優點是:在對同一頁的多個請求間自動保留值,不用服務器端資源,實現簡單,視圖狀態中的值經過哈希計算和壓縮,并且針對Unicode 實現進行編碼,其安全性要高于使用隱藏域;缺點是因為ViewState 存儲在頁面本身,因此如果
存儲較大的值,用戶顯示頁和發送頁時的速度可能會減慢。雖然視圖狀態以哈希格式存儲數據,但它仍可以被篡改。
1.4 使用Cookie
Cookie 可以在頁面之間傳遞少量信息, 可以存儲在客戶端的文本文件中,也可存儲在客戶端的內存中。Cookie 方法適用于存儲少量頁面中經常改動的信息, 如為登陸過的網站保存登陸用戶名,為用戶輸入提供方便,還有在一些用戶自定義項目上保存用戶的個性化設置。使用Cookie傳遞數據時可用:Response.Cookies["鍵名"]=鍵值;取出數據用:變量名=Request.Cookies["鍵名"]。使用Cookie 優點是:Cookie 存儲在客戶端, 不使用服務器資源,實現簡單,可配置到期時間。缺點是:可以存儲的數據量比較少,由于Cookie 并不被所有的瀏覽器支持,而且還可能被用戶禁止或刪除,所以不能用于保存關鍵數據。另外,Cookie 保存的形式是簡單的明文文本,在它里面不宜保存敏感的、未加密的
新聞熱點
疑難解答