在Response.Redirect("a.aspx")保存此頁的數據後,服務器將頁面直接轉向到a.aspx中的一個缺陷,就是轉向後會丟失此頁所有的Request的參數,並且此方法是需要Client發起一個請求。本文給出了這個問題的解決方法和區別所在。
首先Response.Redirect("a.aspx"),在保存此頁的數據後,服務器將頁面直接轉向到a.aspx。此方法有個缺陷,就是轉向後會丟失此頁所有的Request的參數,並且此方法是需要Client發起一個請求。
在IIS 5.0中引入了一個新的函數Server.Transfer("a.aspx"),它很好地解決了轉向後丟失此頁Request參數的問題。並且由於它是從server端直接向下一頁發起請求,所以不需要client再次發送請求。它與Response.Redirect的區別在於:Response.Redirect可以轉向任何一個頁面,而Server.Transfer只能轉向同目錄或子目錄的網頁;Response.Redirect轉向時地址會變成跳轉後的頁面地址,而Server.Transfer轉向時原地址不變,並且傳遞的參數值也被隱藏。
另一個方法是Server.Execute(a.aspx),它和Server.Transfer功能類似。主要的區別在於,server.execute在轉向a.aspx執行完成後,還會返回原來的頁面繼續處理。