August 23, 2007
@ 05:02 PM

ASP.NET'te bir sayfadan diğer sayfaya verileri aktarmak için kullanılan yollardan birisi de bilindiği üzere Cross-Page Postback tekniğidir.

a.aspx sayfasından b.aspx Cross-Page Postback işlemi gerçekleştiğinde a.aspx sayfasına olduğu gibi b.aspx sayfasından erişebilinir.b.aspx sayfasında da PreviousPage özelliği ile a.aspx sayfasına erişiyoruz. a.aspx sayfasındaki herhangi bir kontrole de PreviousPage.FindControl("xx_id") ile erişiyoruz. Peki ya a.aspx deki herhangi bir Property'ye erişmek istersek ?

Eğer b.aspx'e sadece a.aspx den Cross-Page Postback işlemi ile gelindiğini düşünürsek b.aspx'e ;

<%@ PreviousPageType VirtualPath="~/a.aspx" %>

direktifini eklemeniz yeterli. Artık b.aspx.cs de PreviousPage özelliği size a.aspx sayfasını temsil ediyor olacaktır. örneğin;

public partial class a : System.Web.UI.Page
{
    //....

    private int _test;
    public int Test
    {
        get { return _test; }
        set { _test = value; }
    }

}

işte b.aspx sayfasından Test özelliğine direk erişiyor olabileceğiz.

public partial class b: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null)
            Response.Write(PreviousPage.Test.ToString());
    }
}

Not : (a)PreviousPage tür dönüştürme işlemi ile de gerçekleştirebilirsiniz.
if (PreviousPage != null)

    Response.Write(((_Default)PreviousPage).Test.ToString());