跨页投递和Transfer的区别

 跨页投递和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属性判定。
    }
}

原文地址:https://www.cnblogs.com/zhangqs008/p/2341233.html