Server.Transfer方法把執(zhí)行流程從當(dāng)前的ASPX文件轉(zhuǎn)到同一服務(wù)器上的另一個ASPX頁面。調(diào)用Server.Transfer時,當(dāng)前的ASPX頁面終止執(zhí)行,執(zhí)行流程轉(zhuǎn)入另一個ASPX頁面,但新的ASPX頁面仍使用前一ASPX頁面創(chuàng)建的應(yīng)答流。
如果用Server.Transfer方法實(shí)現(xiàn)頁面之間的導(dǎo)航,瀏覽器中的URL不會改變,因?yàn)橹囟ㄏ蛲耆诜?wù)器端進(jìn)行,瀏覽器根本不知道服務(wù)器已經(jīng)執(zhí)行了一次頁面變換。
Response.Redirect則是客戶端第一次請求服務(wù)器返回狀態(tài)代碼302及新URL,客戶端再次請求新URL,服務(wù)器再返回新頁面,比Server.Transfer多一次應(yīng)答。
一般來說如果需要在兩個頁面間共享數(shù)據(jù),而且數(shù)據(jù)量比較大的時候,用transfer會比較合適,在第二個頁面中可以直接使用前一頁面的數(shù)據(jù),
eg:
TransferToPage.aspx
復(fù)制代碼代碼如下:
if(Context.Handler is TransferFromPage)
{
TransferFromPage post=(TransferFromPage)Context.Handler;
startWeekID=Int32.Parse(post.DdlStartWeek.SelectedValue);
endWeekID=Int32.Parse(post.DdlEndWeek.SelectedValue);
}
直接引用前一頁面控件的值。
Redirect可以傳遞一些較小字符串值。
Response.Redirect( "b.aspx?id=0&name=Jeff ");