在Asp.net 中常常需要進入頁面跳轉,一般用到的方法有Server.Transfer,Server.Execute和Response.Redirect,下面講解一下三種方法各自不同的用法。 (1)Server.Transfer方法: Server.Transfer("m2.aspx");//頁面轉向(伺服器上執行). 伺服器停止解析本頁,儲存此頁轉向前的資料後,再使頁面轉向到m2.aspx, 並將轉向前資料加上m2.aspx頁結果返回給瀏覽器,注意的是瀏覽器的地址沒發生變化 還是m1.aspx, (2)Server.Execute方法: Server.Execute("m2.aspx"); 伺服器儲存此頁轉向前的資料後,使頁面轉向到m2.aspx執行, 再返回本頁繼續執行.再將三者結果合并後返回給瀏覽器. 以上都是伺服器端頁面轉向所以瀏覽器不出現頁更改記錄(顯示的地址不會改變). 因此,如果使用者重新整理此頁,也許會出現一些其它意外情況. 此類頁轉向,可完成一些其它功能,比如訪問到前一頁面中的服務端控制項. (3)Response.Redirect: 當瀏覽器請求aspx頁面時,碰到Redirect(url)方法, 相當於告訴瀏覽器,你先需訪問某頁面,於是瀏覽器再向伺服器發送一個到此頁面的請求. 重定位是通過瀏覽器執行的,在伺服器和瀏覽器之間會產生額外的往返過程。 在網路狀況不是很好的情況下,兩次請求會大大的 降低應用程式的反應速度,甚至佔用多餘的頻寬. 轉換完後瀏覽器地址將改變,顯示為asp2.aspx 總結: 在網路狀態較好的情況下,Redirect(url)方法效率最高!! Server.Transfer方法和Server.Execute方法最靈活!! Server.Execute方法佔用資源最多. Server.Transfer和Server.Execute的區別是,Execute執行的結果不會返回給目前使用者。 ·如果要讓使用者來決定何時轉換頁面以及轉到哪一個頁面,超級連結最適合。 ·如果要用程式來控制轉換的目標,但轉換的時機由使用者決定,使用Web衿韉腍yperLink控制項,動態設定其NavigateUrl屬性。 ·如果要把使用者串連到另一台伺服器上的資源,使用Response.Redirect。 ·用Response.Redirect把使用者串連到非ASPX的資源,例如HTML頁面。 ·如果要將查詢字串作為URL的一部分保留,使用Response.Redirect。 ·如果要將執行流程轉入同一Web伺服器的另一個ASPX頁面,應當使用Server.Transfer而不是Response.Redirect,因為Server.Transfer能夠避免不必要的網路通訊,從而獲得更好的效能和瀏覽效果。 ·如果要捕獲一個ASPX頁面的輸出結果,然後將結果插入另一個ASPX頁面的特定位置,則使用Server.Execute。 ·如果要確保HTML輸出合法,請使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。 |