ASP.NET畫面跳轉實現及其傳值問題解決方案
畫面跳轉和傳值問題,一直以來都在困擾著剛剛接觸asp.net web應用程序的開發者,現羅列跳轉方法和傳值方式供大家參考;因為我本身參與的項目功能也比較單一,對此可能認識比較狹隘,希望各位多給提示幫助我進步。此文為我項目組新近員工解惑同時與各位交流共勉。
asp.net web畫面跳轉的方法如下:
1.Server.Execute
Server.Execute并不能完全算是畫面跳轉方法,它是實現動態調用頁面并渲染其內容反映到當前頁面的方法,之所以放在這里是想與Server.Transfer等做一個比較。使用場景主要是有“包含”關系的頁面進行動態調用的時候,例如WebForm2.aspx作為WebForm1.aspx的一部分表示在后者的畫面中,則可通過在WebForm1適當的位置聲明< % Server.Execute("~/WebForm2.aspx") %>實現。
2.Server.Transfer
最節省資源的畫面跳轉方式,可保存前畫面的URL查詢字符串和表單信息,可在跳轉目標畫面中使用PreviousPage查詢跳轉前畫面屬性。Server.Transfer過程中沒有發生HTTP請求,所以不會被HTTP Module和HTTP Handler捕捉到,無法寫處理器;其本質是在服務器端直接進行頁面“切換”,所以也就有客戶端URL顯示不正確,引發一系列的問題,如:URL相對路徑問題、Sitemap問題等。
3.Response.Redirect
此命令將直接在次返回到客戶端通過URL重定向到跳轉目標頁面,比Server.Transfer多了一次客戶端和服務器端之間的往返,因為是純粹URL重定向無法保存前畫面狀態,傳值一般使用URL查詢字符串或Session傳值。
4.PostbackUrl屬性
以HTTP POST方式請求下一個畫面,可以保存跳轉前畫面狀態,問題是POST發生于客戶端,無法在服務器端實現驗證和取消跳轉的邏輯。
5.HTML鏈接
URL重定向,缺點與PostbackUrl一樣發生在客戶端只能通過URL查詢字符串進行傳值。
asp.net web畫面跳轉的傳值方法如下:
1.URL傳值
因為URL長度限制,所以無法傳送大量數據。對于敏感數據需要進行加密。
2.表單HTTP POST傳值
以HTTP POST方式將表單屬性傳回到服務器端,能夠保存前畫面狀態,可以通過PreviousPage屬性進行查詢。
3.PreviousPage屬性傳值
其實就是使用Server.Transfer和HTTP POST方式的畫面跳轉會把表單內容推送到服務器端,所以跳轉后可以通過此屬性獲得前畫面信息。
4.Session傳值
代價比較大的方式,需要注意Session變量的生命周期在不需要的時候顯式注銷對象;對于集群之間的數據共享有很好的解決方案,但是把Session變量保存在數據庫中要有慢25%的代價,這就需要考慮Web服務器和數據庫服務器的性能。
以上,便介紹了asp.net web畫面跳轉的實現以及傳值問題的解決方法。
【編輯推薦】
- ASP.NET DetailsView中顯示選中產品的詳細信息
- ASP.NET 2.0數據教程:GridView選擇行
- ASP.NET 2.0數據教程:GridView顯示數據
- ASP.NET 2.0中添加GridView到頁面
- 新增ASP.NET頁面時的注意事項