QueryString nesnesi Asp.Net sayfalarında veri taşımada kullanılan nesnelerden birisidir.Veri direk URL aracılığıyla diğer sayfalara taşınabilmektedir.Taşınırken sayfa adı sonrasında ? işareti ile başlayan anahtar – değer(key-value) şeklinde taşınır.Bu yöntem sunucuya çok az yük getirdiği için oldukca kullanışlıdır ve çoğu yazılımcı tarafındanda tercih edilmektedir.Herhangi bir siteye girdiğimizde ? işaretinden sonra bazı bilgilerle karşılaşırız.Bu bilgilerin içeriğinde kültğr vb. gibi bilgilerin olabileceğini görürüz.

Querystringler browser üzerinde direk görüntülenebildiği için bazı verilerin taşınması için güvenlik açığı oluşturmaktadır.Bu taşıma işlemi sırasında veriler şifrelenip gönderilse bile artık bunlar kesin çözüm üretmemektedir.Sonuç olarak bu şifrelerin algoritmaları çözülebilir ve verilere bir şekilde ulaşılabilir.Dolayısıyla querystring üzerinde çok fazla önemli bilgiler taşınmamaktadır.

Querystring kullanımı oldukca basittir.Bunun için basit bir örnekle başlayalım.Projemize iki adet sayfa ekleyelim ve ilk sayfamıza bir adet buton ekleyelim.Butonunda click olayını bu şekilde kodlayalım.

  protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("Default.aspx? YazilacakMetin=queryString");
    }

Diğer sayfamızda querystringi elde edip browsera yazma işlemi gerçekleştiriyoruz.

  protected void Page_Load(object sender, EventArgs e)
    {
       string metin = Request.QueryString["YazalicakMetin"];
       Response.Write(metin);
    } 

Querystringimizde ? işaretinden sonra anahtar – deger ilişkisini gözlemleiyoruz.Request property ile querystringimizi elde ediyoruz.

Eğer birden fazla key-value çifti göndermek istersek & işareti ile bu veriler birbirinden ayrılırlar.

Response.Redirect("Default.aspx?YazilacakMetin=queryString1&YazilacakMetin2=queryString2");

Diğer sayfamızda da bu querystringlerimizi alığ browsera yazdırıyoruz tekrar.

protected void Page_Load(object sender, EventArgs e)
    {
        string metin = Request.QueryString["YazalicakMetin1"];
        string metin2 = Request.QueryString["YazilacakMetin2"];
        Response.Write(metin+" "+metin2);
    }

Burada değerlerimizin key-value çifti olduğunu söylemiştik.Dolayısıyla key değerimizi indexleyici içerisinde ismiyle çağırabileceğimiz gibi index numralarıylada kullanabilirdik.(ilk elemanın 0 dan başladığını unutmayalım…)
QueryString taşımada dikkat etmemiz gereken diğer bir nokta ise içeriğinin ASCII kod olması gerektiğidir.Standardı sağlamalıdır.Bu standarda uymayan karakterler % işareti ile başlayarak kodlanırlar.Bu standardı sağlayabilmek için UrlEncode ve UrlDecode metodlarını kullanabiliriz.Bu kodlar server sınıfının kodlarıdır ve kodlarımız içerisinde bulunan boşluk ve türkçe karakterleri standartlaştırmaktadır.Bu kodlama aşamısında boşluk karakterinin %20 , & karakterinin %26 olarak kodlandığını browser üzerinden görebiliriz.Dolayısıyla eğer browser üzerinden verilerimizi göndereceksek ve bu veri içeriği ASCII kod standardına uymuyor ise bunu Encode etmeli eğer veriyi çekmek istiyorsak Decode etmeliyiz.
Bir sonraki yazıda görüşmek dileğiyle herkese mutlu günler dilerim.

Serkan YILMAZ
s_yilmaz88@hotmail.com

3 Responses to “QueryString”

  1. altan diyor ki:

    merhaba, string metin = Request.QueryString["YazalicakMetin"]; de YazilacakMetin olması gerekmektedir.küçük bir hata gibi ama inanın veri çekmeyince aaa neden çekmiyor diyen çok insan olacaktır, teşekkürler…

  2. Serkan diyor ki:

    Merhabalar ,

    Burada tam olarak ne demek istediniz anlayamadım . Biraz daha açıklayıcı şekilde yazarsanız daha iyi yardımcı olabilirim.

    Teşekkürler ,

Yorum bırakabilirsiniz ...

Bunları kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>