3 Eylül 2010 Cuma

QueryString

Asp.Net'de veri saklama yöntemlerinden bir diğeri de QueryString'dir. QueryString, kısaca taşınacak verinin direkt URL aracılığıyla diğer sayfalara taşınma yöntemidir. Taşınacak olan verilerin sayfanın adı yazıldıktan sonra ? işareti le başlayan kısımda taşınmasıdır. Bu yöntem kullanım kolaylığı ev sunucuya getirdiği yükün az olması sebebiyle çok tercih edilmektedir. Kısaca bu yöntemin de nasıl kullanılacağına bakacak olursak;

Response.Redirect("IkinciSayfa.aspx?UrunId=5");

İkinciSayfa.aspx

int id = Request.QueryString["UrunId"];
Response.Write(id);

Dediğimiz zaman ekranda UrunId'yi yani 5 sayısını görmüş olacağız. Gördüğünüz gibi kolaylıkla ilk sayfadan diğer sayfaya veri taşımış olduk.

Şimdi bir de tek veri üzerine değil de birden fazla veriyi nasıl taşıyacağımızı gösterelim. Mantık yine aynı, sadece nasıl kullanıldıkları hakkında ufak bilgi vereceğim örnek üzerinde;

Response.Redirect("IkinciSayfa.aspx?UrunId=5&UrunAdi=Monitör");

IkinciSayfa.aspx

int id = Request.QueryString["UrunId"];
string ad = Request.QueryString["UrunAdi"];

ViewState

Web uygulamalarında, verilerin istemci tarafında saklanması yöntemlerinden biridir. Üzerinde geliştirme yaptığımız sayfada kullandığımız kontroller, database vs. gibi işlemleri postback sırasında şifrelenmiş olarak duran bir ViewState içerisine yazar. Daha sonra da sayfa tekrar yüklendiğinde bu kontrollerin özellikleri bu nesneden okunur. Kısaca çalışma mantığı budur. Şifrelenmiş şekilde bulunduğundan, Cookie ve QueryString'e göre daha güvenliklidir fakat yine de günümüzde şifrelenmiş verilerin rahatlıkla çözülebildiği teknoloji varken önemli bilgilerin bu şekilde saklanması pek tavsiye edilmez. Şimdi kısaca kullanımını gösteren küçük bir örnek verelim.

ViewState["UrunId"] = 15;
ViewState["Tablo"] = new DataTable("TestTable");

Verileri taşıyacağımız diğer sayfada ise,

int id = (int)ViewState["UrunId"];
DataTable dt = (DataTable)ViewState["Tablo"];

Dikkatinizi de çekmiştir, ikinci sayfada sakladığımız verileri kullanmak isterken cast işlemi gerçekleştirdik. Diğer sayfadan hangi değeri sakladığımızı ide'nin bilemeyeceği için mutlaka bizim ona belirtmemız(kastetmemiz) gerekir.

Son olarak da, kullandığımız bu ViewState'ler yine gereksiz yer kapladığından dolayı kullanılmayan ViewState'leri aşağıdaki komut yardımıyla da rahatlıkla silebiliriz.

ViewState.Remove("Tablo");

Durum Yönetimi

Web uygulamaları yaparken sıkça başımıza gelen sorunlardan biri de bir veriyi diğer sayfalara nasıl aktarılabileceğidir. Çünkü yeri gelecek bir ürünü diğer sayfada göstermek isteyeceğiz, bu durumda diğer sayfadan UrunId'ye ihtiyacımız olacak. Bu gibi durumlarda bizim bazı verileri saklamamız gerekecek. İşte, web uygulamalarında veriler ile ilgili olarak durum yönetimi sağlayan, veriyi istemci veya sunucu tarafında saklanmasını sağlayan yöntemler şu şekilde maddeleyebiliriz,

  • ViewState
  • QueryString
  • Cookie
  • Session
  • Application

Bu 5 farklı yöntem, ViewState, Cookie, QueryString verilerin istemci tarafında, Session, Application ise verilerin sunucu tarafında saklatılmasını sağlayan yöntemlerdir.

İleriki makalelerimizde bunlar hakkında daha ayrıntılı bilgiler ve kullanım yerlerine göre küçük örnekler gçstererek daha iyi anlamamızı sağlayacağız. Şimdi sadece kullanılma amaçlarını ve kısaca tanıtımlarını yapmış olalım.