20 Haziran 2013

Asp.NET Sayfa Yönlendirme

Merhabalar;

Diyelim ki Asp.NET projenizde bir sayfadan projenize ait başka bir sayfaya geçiş yapmak istiyorsunuz.

Bunu:

Response.Redirect("Sayfa2.aspx");   ile yapabilirsiniz. 
                                   

Gelelim bu kod parçasının nasıl kullanılacağına. Açtığınız bir Asp.NET projesini Design kısmı aşağıdaki gibi olacak şekilde düzenleyin:




Şimdi yapacağımız şey kullanıcı bu alana bilgilerini girip ileri butonuna tıkladığında yeni bir sayfaya geçip bu bilgileri yeni sayfada yazdırmak. O zaman önce projeye yeni bir sayfa ekleyelim. Solution Explorer'da projeye sağ tıklayıp "Add New Item" diyip sonrasında açılan kısımdan da "Web Form" seçip Sayfa2 diye isimlendirdikten sonra tamam diyoruz ve 2. sayfamız oluşmuş oluyor. Bu sayfanın Design kısmını da aşağıdaki formatta 3 tane label olacak şekilde düzenleyelim: 




Anasayfadaki butona tıklandığında ilk label'a AnaSayfa.aspx'teki TextBox'lardan ad, ikinciye soyad, üçüncüye de yaş gelecek.

Şimdi AnaSayfa.aspx'teki butonun click olayına girmek için butona çift tıklayalım ve kodlarımızı yazmaya başlayalım:

    protected void btnIleri_Click(object sender, EventArgs e)
    {
        Response.Redirect("Sayfa2.aspx?Ad=" + txtAd.Text + "&Soyad=" + txtSoyad.Text + "&Yas=" + txtYas.Text);   
    }


Tırnak içindeki ifadeler browser'da görülecek stringlerdir ve karşılıkları ise TextBox'lardan alınan text'lerdir. Stringleri sayfadan ayırmak için ? kullanılır ve stringleri birbirinden ayırmak için de & işareti kullanılır. Şimdi de Sayfa2'deki label'lara AnaSayfa'dan gelecek değerleri atayalım. Sayfa2.aspx.cs:


public partial class Sayfa2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblSayfa2Ad.Text = Request.QueryString["Ad"];
        lblSayfa2Soyad.Text = Request.QueryString["Soyad"];
        lblSayfa2Yas.Text = Request.QueryString["Yas"];
    }
}


Programı bu haliyle çalıştırdığımız ve AnaSayfa'daki TextBox'lara sırasıya Elif BAYRAKDAR 23 girdiğimde browser'da verilerin aktarıldığını ve Sayfa2'deki label'lara sırasıyla yazıldığını görüyoruz. 

AnaSayfa:

yazıp İleri butonuna tıkladım ve Sayfa 2:


Bu yöntem gizli olmasına gerek olmayan verilerin taşınması için kullanılır. Çünkü görüldüğü üzere bilgiler browser'ınızda açık olarak görülecektir.

Eğer bir başka web sitesine geçmek istiyorsanız URL verme yöntemi kullanılır:
Response.Redirect("https://www.google.com.tr/"); // www.google.com.tr’ye geçilir

Hoşçakalın.


14 yorum:

  1. Elif Hanım güzel bir anlatım olmuş teşekkür ederim peki mesela lblSayfa2Yas iki haneli ve sayısal olarak geçmediğinde nasıl hata verdirebiliriz. Bu konuyu da anlatırsanız çok sevinirim iyi günler.

    YanıtlaSil
    Yanıtlar
    1. Merhaba. Rica ederim, fakat sorunuzu anlayamadım. "iki haneli ve sayısal olarak geçmediğinde" derken neyi kastediyorsunuz?

      Sil
  2. lblSayfa2Yas'ı koşul ekleyip verileri öyle aktarmak istiyorum. Eğer mümkünse yaş için en fazla iki haneli olacak yani 1'den 99'a kadar ve sadece
    sayısal değer girilecek o labela bu koşullar sağlanmazsa hata mesajı verecek. Bunları nasıl yapabilirim bilgilendirirseniz sevinirim.

    YanıtlaSil
    Yanıtlar
    1. Toolbox'tan bir tane rangevalidator ekleyerek ve sonra şu şekilde düzenleyerek istediğinizi gerçekleştirebilirsiniz:

      ID="RangeValidator1"
      ControlToValidate="txtYas"
      MaximumValue="99" MinimumValue="0" Type="Integer" ErrorMessage="Sayı 0 ile 99 arasında olmalı">

      Sil
  3. örnek için teşekkürler peki login olduktan sonra kullanıcının geldiği sayfaya nasıl yönlendirme yapabilirim?

    YanıtlaSil
    Yanıtlar
    1. Rica ederim. Sorunuzu çok anlayamadım ama Response.Redirect() içine bir sayfa url'si yazarsanız o sayfaya gider. Mesela Response.Redirect("KullaniciSayfasi.aspx");

      Sil
    2. evet bunun tarzında bir şey sormuştum.Verdiğiniz örnek önümü açmıştı tekrar teşekkürler. Yakın Zamanda yine ihtiyaç duydum aradan 1 sene geçmiş ama çözümünü yazayım :) belki faydalanan çıkar.

      login sonrası kullanıcının geldiği konunun sayfasına geri dönmesi için konunun bulunduğu sayfaya bi button atıp click eventine

      Response.Redirect("giris.aspx?ReturnUrl=" + HttpContext.Current.Request.RawUrl);
      yazmamız gerek. Bu şekilde istek yaptığımız sayfanın urli querysting ile diğer sayfaya atıyoruz.

      Gittiğimiz sayfada da giriş başarılı ise geldiğimiz sayfaya gidecek. Eğer querystring boş ise kayıt sayfasına yönlendirme yapılacak.

      String returnUrl1;
      if (Request.QueryString["ReturnUrl"] == null)
      {
      returnUrl1 = "register.aspx";
      }

      else
      {
      returnUrl1 = Request.QueryString["ReturnUrl"];
      }
      Response.Redirect(returnUrl1);


      Sil
    3. Geri dönüş için teşekkürler :)

      Sil
  4. Eline sağlık gerektiği gibi anlatmışsın. Başarılı.

    YanıtlaSil
  5. Çok teşşekürler Elif Hanım Paylaşımız İçin Gayet Anlaşılır Bir Şekilde Anlatmıssınız

    YanıtlaSil
  6. Merhaba elif hanım benim bir sorum olacaktı. Response yaparken Text dosyasını alıyoruz fakat benim elimde herhangi bir text dosyası yok object1.ViewBag.Mesaj şeklinde nesnem var bunu nasıl diğer sayfadaki labela yönlendirebilirim

    YanıtlaSil
    Yanıtlar
    1. Merhaba. Text dosyasını alıyoruz fakat elimde text dosyası yok derken neyi kastediyorsunuz?

      Sil