ASP.NET ile Durum Yönetimi - QueryString

QueryString yapısı ASP.NET durum yönetimi kavramlarından biridir.

Temel olarak adres çubuğu üzerinde veri taşımamızı sağlar. Hatta bu linkin üzerinde değişiklikler yaparak veri gönderip istedğimiz kayda ulaşabiliriz.Herhangi bir sayfaya bağlı kalmadan çalışabilir.

Adres çubuğunda QueryString işlemi aşağıdaki gibi yapılır. Tek parametreli değer göndereceksek
sitelinki.aspx?ParametreAdi=Deger
Birden fazla parametre göndereceksek aralarına & işareti koyduk
sitelinki.aspx?ParametreAdi2=Deger1&ParametreAdi2=Deger2

QueryString oluştururken linkten sonra "?" ekledik.Bu işaret ile sayfamızın parametre almasını sağladık.Değişken adına istediğimiz şekilde belirleyebiliriz ki amacımız değişkeni kullanarak veri göndermektir."=" işaretini kullanmamız bu parametremizin değer alacağı anlamına gelir ve sağına değerimizi yazdık. Oluşturduğumuz bu QueryString bizi ilgili parametrenin ilgili değere ait kayda götürecektir.

Örnek bir uygulamamızda Kütüphane sitesinde listelenen kitaplardan seçtiğimiz kitabın ID'sini KitapDetay.aspx sayfasına QueryString yardımıyla taşıyacağız.

kitapara

KitapAra.aspx sayfasında İlgili kitaba ait Detay butonuna tıklıyoruz ve KitapDetay.aspx sayfasına yönlendiriyoruz.

QueryString'imizi de aşağıdaki gibi oluşturduk. Detay butonuna tıklandığında Eval metodu ile KitapID'sini QueryString'deki KitapID değişkenine atadık.

 <a class="btn btn-success" href="KitapDetay.aspx?KitapID=<%#Eval("KitapID")%>">


id8
id9

KitapDetay.aspx?KitapID=8 olan kitabın bilgileri QueryString'de KitapID'nin değerini 9 yaptığımızda ilgili kitaba ait bilgiler gelecektir.

Herhangi bir parametre almadan adres çubuğuna KitapDetay.aspx yazdığımızda sayfada hiçbir bilgi görünmeyecektir. Çünkü bir sayfaya hiçbir bilgi göndermedik ve önceki sayfadan aldığımız değere göre kitabın detaylarını doldurduk.

QueryString değerini kontrol etmek için Request sınıfının QueryString özelliğini kullanacağız.
QueryString["parametreAdi"] köşeli parantez içine QueryString parametresinin adını yazdık. Eğer KitapID değeri null değilse, veritabanından veri çekmeye hazır bir KitapID değerimiz vardır. Sorgu sonrasında labelların Text özelliklerine DataTable'daki ilgili kolonlarını yazdırıyoruz.

      if (Request.QueryString["KitapID"] != null)
      {
         if (!IsPostBack)
         {
           var kitapDetay = KütüphaneQueries.KitapFullDetay(Request.QueryString["KitapID"]);
           Label1.Text = kitapDetay.Rows[0]["ISBN"].ToString();
           Label3.Text = kitapDetay.Rows[0]["KitapAdi"].ToString();
           Label5.Text = kitapDetay.Rows[0]["TürAdi"].ToString();
           Label7.Text = kitapDetay.Rows[0]["YazarFullAd"].ToString();
           Label9.Text = kitapDetay.Rows[0][3].ToString();
           Label11.Text = kitapDetay.Rows[0]["YayınEviAdı"].ToString();
           Label15.Text = kitapDetay.Rows[0]["LangName"].ToString();
           Label17.Text = kitapDetay.Rows[0]["Aciklama"].ToString();
         }
     }


Yorumlar