跨网页公布(Cross.Page Postiing)

1.     跨网页POST:
    WebForm1.aspx文件:
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/WebForm2.aspx"/>

    WebForm2.aspx文件:
    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox aTextBox = (TextBox)PreviousPage.FindControl("TextBox1");
        this.Response.Write(aTextBox.Text);
    }
    PreviousPage本身属于Page类型,并只有在来源网页和目标网页属于相同的ASP.NET应用程序中,目标网页的
PreviousPage属性才会包含来源网页的引用;如果网页不是跨网页POST的目标,或者网页在不同的应用程序中,就
不会初始化PreviousPage属性。因此,在获取PreviousPage引用之前,应该先检查其可用性。
    跨网页发布只能用在Button类型的控件中。经常用来传递参数,当参数非常多的时候,使用跨网页POST,比使
用URL传递参数要简洁的多。

 

 

2.    使用@PreviousPageType指令实现强类型的跨网页POST:在一个网页中只能有一个@PreviousPageType指令。
    WebForm1.aspx文件:
    //源网页的一个属性
    public DateTime MyDateTime
    {
        get { return DateTime.Now; }
    }

    WebForm2.aspx文件:
    <%@ PreviousPageType VirtualPath="~/WebForm1.aspx" %>
    protected void Page_Load(object sender, EventArgs e)
    {
        //可以直接读取源网页对象的这个属性,必须是公有的
        this.Response.Write(PreviousPage.MyDateTime.ToLongTimeString());
    }

 

 

3.    使用@Reference指令实现跨网页POST:在一个网页中可以使用多个@Reference指令。
    WebForm1.aspx文件:
    //源网页的一个属性
    public DateTime MyDateTime
    {
        get { return DateTime.Now; }
    }

    WebForm2.aspx文件:
    <%@ Reference VirtualPath="~/WebForm1.aspx" %>
    protected void Page_Load(object sender, EventArgs e)
    {
        //可以先声明一个源网页的对象 
        WebForm1 aWebForm2 = (WebForm1)PreviousPage;
        //可以直接读取源网页对象的这个属性,必须是公有的
        this.Response.Write(aWebForm2.MyDateTime.ToLongTimeString());
    }

posted on 2009-05-24 16:28  sinbad_li  阅读(434)  评论(0编辑  收藏  举报