Server.Transfer方法把執行流程從當前的ASPX文件轉到同一服務器上的另一個ASPX頁面。調用Server.Transfer時,當前的ASPX頁面終止執行,執行流程轉入另一個ASPX頁面,但新的ASPX頁面仍使用前一ASPX頁面創建的應答流。
如果用Server.Transfer方法實現頁面之間的導航,瀏覽器中的URL不會改變,因爲重定向完全在服務器端進行,瀏覽器根本不知道服務器已經執行了一次頁面變換。
Response.Redirect則是客戶端第一次請求服務器返回狀態代碼302及新URL,客戶端再次請求新URL,服務器再返回新頁面,比Server.Transfer多一次應答。
一般來說如果需要在兩個頁面間共享數據,而且數據量比較大的時候,用transfer會比較合適,在第二個頁面中可以直接使用前一頁面的數據
例:Server.Transfer
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
protected void Button1_Click(object sender, EventArgs e)
{
this._name = this.TextBox1.Text;
Server.Transfer("WebForm2.aspx", false);
}
}
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WebForm1 form1 = (WebForm1)Context.Handler;
Response.Write(form1.Name);
}
}