跨頁投遞和transfer的差別:
雖然都是在頁面間傳遞資訊,但是二者也有很大的不同。下面用執行個體說明:
關鍵點:
使用previouspage.iscrosspagepostback屬性判斷目前請求是不是跨頁投遞。
使用previouspage.findcontrol方法可以擷取源頁面的控件。
跨頁投遞容易和transfer混淆,可以用previouspage.iscrosspagepostback屬性判定。
1.頁面執行流程:
2.檔案結構圖:
3.跨頁投遞頁面:
注意: postbackurl="~/displaypage.aspx"用來跨頁面投遞。
4.transfer頁面:
背景代碼:
//transfertest頁面;
public partial class transfertest : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
}
protected void button1_click(object sender, eventargs e)
server.transfer("displaypage.aspx");
}
5.顯示頁面的背景代碼:
//default.aspx顯示頁面;
public partial class _default : system.web.ui.page
{
if (previouspage != null) //是否有投遞頁面。
{
if (previouspage.iscrosspagepostback)
{
response.write(((textbox)previouspage.findcontrol("textbox1")).text + "</br><h3>這是跨頁投遞方法發送的結果</h3>");
}
if (!previouspage.iscrosspagepostback)
{
response.write(request.params["textbox1"] + "</br><h3>這是transfer方法發送的結果</h3>");
//注意:request.params["textbox1"]用來擷取轉向頁面控件(這裡是textbox1)的值;
}
}
//使用previouspage.iscrosspagepostback屬性判斷目前請求是不是跨頁投遞。
//使用previouspage.findcontrol方法可以擷取源頁面的控件。
//跨頁投遞容易和transfer混淆,可以用previouspage.iscrosspagepostback屬性判定。