Asp.net Sayfalar arası aktarım PreviousPage ve PreviousPageType kullanımı

Asp.net te sayfalar arasındaki veri aktarımını çok defa işlemlerimizde kullanırız. Bunu nasıl sağlayabiliriz, bir örnekle açıklamaya çalışayım.

Bir sayfadan diğer sayfaya veri gönderme ve bu verileri kullanmanın iki yöntemi var.

 

İlk yöntem, verilerin aktarıldığı (Page1.aspx) sayfadaki kontrollerin değerini almak için , o kontrol tipinde bir kopya oluşturup ,bu kopyayı aktarılan sayfadan(Page2.aspx)  Previous Page özelliğinin FindControl() methodu kullanılarak doldurabiliriz.

 PreviousPage ile bunun nasıl sağlanacağını göreceğiz.

Page1.aspx deki formumuz aşağıdaki gibi olacak. Buttonun POSTBACKURL methoduna verileri göndereceğimiz sayfayı seçmiş olacağız (page2.aspx)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page1.aspx.cs" Inherits="PreviousPageType_Page1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .auto-style1 {
            width: 100%;
        }
        .auto-style2 {
            width: 119px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <table class="auto-style1">
            <tr>
                <td class="auto-style2">Etkinlik İsmi</td>
                <td>
                    <asp:TextBox ID="txtisim" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">Etkinlik Tarihi</td>
                <td>
                    <asp:Calendar ID="cldtarih" runat="server"></asp:Calendar>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">&nbsp;</td>
                <td>
                     
                </td>
            </tr>
            <tr>
                <td class="auto-style2">&nbsp;</td>
                <td>
                    <asp:Button ID="Button1" runat="server" Text="Formları Verisi ile beraber gönder" 
                                                            PostBackUrl="~/PreviousPageType/Page2.aspx"/>
                </td>
            </tr>
        </table>
    
    </div>
    </form>
</body>
</html>

Page2.aspx.cs sayfasındada PREVİOUSPAGE özelliğini kullarak aşağıdaki gibi verileri alabilir ve yazdırabiliriz

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page2.aspx.cs" Inherits="PreviousPageType_Page2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

 

İkinci yöntem, ise verilerin alınacağı sayfada PreviousPageType yönergesini kullanarak bir kopya oluşturmadan , sayfamızda methodlar kullarak bu verileri yollayabiliriz.

 PreviousPageType ile bunun nasıl sağlanacağını göreceğiz.

Page3.aspx sayfasındaki formumuz aşağıdaki gibi olacak.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page3.aspx.cs" Inherits="PreviousPageType_Page1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .auto-style1 {
            width: 100%;
        }
        .auto-style2 {
            width: 119px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <table class="auto-style1">
            <tr>
                <td class="auto-style2">Etkinlik İsmi</td>
                <td>
                    <asp:TextBox ID="txtisim" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">Etkinlik Tarihi</td>
                <td>
                    <asp:Calendar ID="cldtarih" runat="server"></asp:Calendar>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">&nbsp;</td>
                <td>
                     
                </td>
            </tr>
            <tr>
                <td class="auto-style2">&nbsp;</td>
                <td>
                    <asp:Button ID="Button1" runat="server" Text="Formları Verisi ile beraber gönder" 
                                                            PostBackUrl="~/PreviousPageType/Page4.aspx"/>
                </td>
            </tr>
        </table>
    
    </div>
    </form>
</body>
</html>

Page3.aspx.cs de şu şekilde olacaktır.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class PreviousPageType_Page1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public TextBox Etkinlik
    {
        get { return txtisim; }
    }
    public Calendar Tarih
    {
        get { return cldtarih; }
    }

}

Page4.aspx de şu şekilde olacaktır .ilk yöntemdem farklı olarak  <%@ PreviousPageType%> yönergesinin kullanıldığına dikkat ediniz.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page4.aspx.cs" Inherits="PreviousPageType_Page2" %>

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

Page4.aspx.cs de şu şekilde olacaktır.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class PreviousPageType_Page2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage.IsCrossPagePostBack)
        {
            Label1.Text = "Etkinlik ismi : " + PreviousPage.Etkinlik.Text + "<br/>" +
                "Etkinlik Tarihi :" + PreviousPage.Tarih.SelectedDate.ToShortDateString();
        }
    }
}
Yorumlar