跨页投递和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
{
protected void Page_Load(object sender, EventArgs e)
{
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属性判定。
}
}