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