Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

ASP.Net Query String

ASP.Net meraklısı yazılımcılara yeniden merhabalar :)

Yeni bir ASP.Net makalemizin bugünkü konusu QueryString ve aslında bu konuya hiçte yabancı değilsiniz,çünkü
QueryString hemen hemen bütün dinamik web sitelerinde kullanılmakta ve kendilerini URL 'lerde göstermektedir.

QueryString konusunu biraz daha açalım ve biraz genel kültür yapalım :)

-Web sayfasının linkinde anahtar sözcüklere karşılık değerlerin bulunduğu metin tabanlı kodlardır,
-Birkaç farklı yöntemi vardır ancak ASP.Net'te hemen hemen standart ve kolay bir yazım şekli vardır,
-Sayfa içerisinde anchor text (a tagı olarak bilinir) ile query string yaratılabildiği gibi dinamik bir 
  biçimde web programlama tarafında (C#,VB.Net,PHP) oluşturulabilir,
-Anahtar karakteri soru işareti (?) dir,
-Bir URL'de birden çok query string kullanılabilir ve birden çok değer çekilebilir,
-Güvenlik riski hat safhada olabildiği için çok dikkatli kullanılmalıdır,
-SEO için önemli bir yere sahip olduğu için mümkün olduğunca anlamlı (sayısal olmayan) query string
  URL'ler oluşturulması gerekir.
-Boşluk ve Türkçe karakter kullanılmamalıdır. 

Peki bu QueryString dediğimiz olay neydi?

http://www.siteadi.com/index.aspx?kelime=deger

Burada basit bir query string kullanımı görüyoruz ve bir query stringi anlamanın yolu soldan sağa olarak şöyledir:
HTTP protokolünü kullanan "siteadi.com" isimli web sitesinin "index.aspx" sayfasındaki "kelime" isimli değişkenin
değeri "deger" dir.
ASP.Net'te birden çok query string kullanabilmek için oluşturulan her query string arasına && (ve) sembolleri
eklenir:

http://www.siteadi.com/index.aspx?kelime=deger&&kelime2=deger2

Query String'in ne olduğunu nasıl kullanıldığını biraz öğrenmiş olduk,şimdi de biraz ASP.Net uygulaması yaparak
öğrendiklerimizi pekiştirelim değil mi :)

Yapmak istediğimiz şu olsun; kullanıcı ASP.Net texboxa bir değer yazsın ve butona tıkladığında bir query string
oluşturulsun,ardından oluşturulan query stringe ait URL'e yönlendirilsin.

Şimdi bir ASP.Net projesi oluşturalım ve "index.aspx" adında boş bir web form ekleyelim:





Şimdi butonumuza çift tıklayarak C# kodlarımızı yazalım:



ASP.Net'te postback sorunu yaşamamak adına formun load eventine postback önlemimizi yazdık ve projemizi
çalıştıralım:



Şimdilik butonumuza tıkladığımızda herhangi bir olay gerçekleşmiyor çünkü henüz query string için kod yazmadık
ve şu an da sayfanın URL'ine dikkat edersek;

http://localhost:7842/index.aspx

yazıyor.Yani herhangi bir query string ifadesi yer almıyor.
Şimdi query string ifademizi oluşturmak için tekrar code behind'a dönüyoruz:



Yaptığımız bu iki satır kodda öncelikle kullanıcının gireceği değeri string bi ifade ile "deger" isimli değişkenimize yükledik.
Bu konuda önemli olan ASP.Net'in Response.Redirect(); metodudur,bu metot ile sayfalar arasında ve hatta başka sitelerdeki linklere yönlendirme imkanı sunmaktadır.

Bir ASP.Net projesi içerisindeki sayfalar arasında dinamik biçimde (butona tıklamak gibi) gidip gelmek için Response.Redirect metodunu kullanabilmek için çift tırnaklar içinde sayfanın adını yazmak yeterli olur.

Örneğin;
Response.Redirect("urunler.aspx");
gibi bir kullanımda ASP.Net kullanıcıyı ürünler sayfasına yönlendirir,query string ile birlikte kullanabilmek için ise sayfa adının yanına "?degisken=deger" ikilisini yukarıda gösterdiğimi örnekteki gibi kullanabilirsiniz.

Response.Redirect metodunu öğrendiğimize göre şimdi projemizi çalıştıralım ve test edelim:



Textboxa yazdığımız "elma" isimli değerimizi böylece query string içerisinde kullandık ve linkimiz

http://localhost:7842/index.aspx?kelime=elma

şeklini aldı.

Peki ASP.Net'te nasıl birden çok QueryString oluşturabiliriz?

Bunun için web formumuza yeni bir textbox daha ekleyelim:


ve kod tarafında da girilecek değeri yakalayalım:



İkinci textboxa girilecek değeri string değişkene atadık ve Response.Redirect metodu içerisine Response.Redirect(sayfa.aspx?degisken1=deger1&&degisken2=deger2);

formatın uygun biçimde yerleştirdik.Dikkat ederseniz burada boşluk karakteri kullanılmıyor çünkü QueryString'de
boşluk ve Türkçe karakter kullanmak birçok soruna sebep olmaktadır.
Şimdi projemizi tekrar çalıştıralım:



Böylece birden çok QueryString yazımı gerçekleştirmiş olduk,peki ASP.Net'te QueryString nasıl yakalanır?
Daha doğrusu QueryString'lerden gelecek değerleri nasıl yakalarız?


Şimdi web formumuza bir butona daha ekleyelim:



Oluşturduğumuz bu buton ile query stringlerden gelen ifadeleri yakalayacağız ve yine bunun için ASP.Net'in 
Request.QueryString metodunu kullanacağız.

Request.QueryString metodunun kullanım formatı ise:

Request.QueryString["degisken"] şeklindedir.Yani buradaki "degisken" textboxlara girilen değerleri değil bu değerlerin URL'deki değişkenlerine denk gelmektedir ve bu örneğimizde ise QueryString değişkenleri olarak "kelime" ve "kelime2" isimlerini kullandık.
Ancak Request.QueryString metodunu tek başına kullanamıyoruz çünkü yapı olarak "NameValueCollections" döndürmektedir ve bu örneğimizde query string'lerden string tipinde değerler yakalıyoruz,o yüzden Request.QueryString metodunu string değişken tipine Convert (değişken dönüşümü) yapmalıyız.

Şimdi oluşturduğumuz butonumuza çift tıklayalım ve yine C# ile query string'deki ifadeleri yakalayalım:



Burada yazdığımız kodlara baktığımızda yazılanların sanki QueryString oluşturan butona benzediğini söyleyebiliriz,aradaki
fark ise artık query string biçimde ifade oluşturmak yerine oluşturulan linkteki query string değerlerini yakalamak oldu.
Şimdi butonlara sırasıyla tıklıyoruz; öncelikle önceki butona tıklayarak bir query string oluşturalım:



Şimdi de "yakala" isimli butonumuza tıklayarak oluşturduğumuz query stringleri yakalayalım:



QueryString kullanımında dikkat etmemiz en önemli konu boşluk karakteridir ve mutlaka query string ifadelerde boşluk yerine düz çizgi-tre (-) veya alt düz çizgi-alt tre ( _ ) ifadesi ya da benzer karakterler girmek gerektiğidir,tabi SQL Injection konusuna dahil olan (!,<,>) gibi karakter kullanmamaya dikkat etmek gerekir zira QueryString ile web sitemizin hacklenmesini istemeyiz :)

ASP.Net Query String kullanımı konusunda aklıma gelenler şimdilik bu kadarla sınırlı kalıyor,ilerleyen ASP.Net makalelerimiz sonrasında küçük bir e-ticaret uygulaması örneğini yazmayı planlıyorum ve o örnekte ASP.Net QueryString konusunu daha detaylı inceleyeceğiz.

Bir sonraki makalemizde görüşmek üzere hoşçakalın :)

Proje Linki:
https://www.serkanayyildiz.com/images/uploaded/10-12-2013-20-35-54/queryString.zip

Projeyi İndir

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu