Asp.Net QueryString ve Multiple QueryString
  1. Anasayfa
  2. ASP.Net

Asp.Net QueryString ve Multiple QueryString

2

Asp.Net ile web uygulamalarında linkler yardımıyla bir sayfaya veri göndermek istediğimizde QueryString kullanırız. QueryString Nedir :  QueryString yapısı ile internet tarayıcımızın URL satırını kullanarak mevcut linklere eklemeler yaparak göndermek istediğimiz veriyi başka bir sayfaya gönderebiliriz. QueryString söz dizimi aşağıdaki gibidir.

Örneğin: mshowto.org/Default.aspx?Kategori=Yazilim

Yukarıdaki link tamamen örnek amaçlıdır ve tıkladığınızda hiçbir yere gidemezsiniz. Fakat bu tür linkleri özellikle kitap satışı yapılan sitelerde çok görebilirsiniz. Ancak son zamanlarda yeni web sayfaları klasik Asp.Net Web Forms yerine Asp.Net MVC ve yeni teknolojileri ile geliştirildiğinden bu tür linkler görmeyebiliriz. Asp.Net Web Forms ile yapıldığına emin olduğumuz bir web sayfasında da çeşitli URL Routing mekanizmaları kurgulanmış ise yine linkleri bu şekilde apaçık göremeyebiliriz. Fakat bu makalemizde Asp.Net Web Forms ile uygulama geliştiren okurlarımız için ki mevcut projelerin Asp.Net Web Forms olması ve kısa vadede değiştirilmesinin mümkün olmaması sebebiyle ben de onlardan bir tanesiyim QueryString nasıl oluşturulur, nasıl kullanılır ve gerekli durumlarda Multiple QueryString nasıl kullanılır beraber inceleyelim.

QueryString Tanımlama

Ürün ve ürüne ait detayları göstereceğimiz bir senaryoda öncelikle Visual Studio ile yeni bir Asp.Net Web Forms projesi başlatalım. Projenin adını QueryString olarak belirliyor ve herhangi bir eklenti gelmesin diye Empty Project başlatıyorum.

Resim-1

Daha sonra projemize Ctrl + Shift + A tuş kombinasyonu yardımıyla iki adet Web.Form ekliyoruz. Bunlardan bir tanesine Urunler.aspx diğerine ise UrunDetail.Aspx ismini veriyorum.

Resim-2

Resim-3

Şimdi ürünlerimizi ve ürün detaylarımızı tutacağımız tablolarımızı yeni bir veri tabanı içerisinde oluşturalım. Bunun için öncelikle SQL Server Management Studio üzerinden yeni bir veri tabanı oluşturuyorum. Veri tabanı adına UrunSatis ismini veriyorum.

Resim-4

Oluşturduğumuz veri tabanı üzerine gelerek Tables sekmesi üzerinde sağ tık yaparak yeni iki adet tablo ekliyoruz. Bunlardan bir tanesini TBL_Urunler diğerini ise TBL_UrunDetaylari adı ile kaydediyorum.

Resim-5

TBL_Urunler tablosuna ürün adı, fiyatı, markası gibi temel bilgileri içeren alanları oluşturuyorum. Kaydetmeden önce PrimaryKey ve IdentityColumn özelliğini YES olarak güncelliyorum. Bu işlem eklenen her bir kaydın ID değerinin birer birer artacağı anlamına gelmektedir.

Resim-6

Yukarıdaki gibi oluşturulan tablodan sonra detayların yer alacağı ikinci tabloyu da aşağıdaki gibi oluşturuyorum.

Resim-7

Tabloları oluşturduktan hemen sonra içerisine örnek olarak biraz veri girişi yapalım. TBL_Urun ve TBL_UrunDetaylari tablolarına aşağıdaki gibi ürün ve detay eklemesi yapıyorum. Urun ID’lerine göre detay tablosunda detaylar girdiğime dikkat edelim.

Resim-8

Resim-9

Tabloları oluşturduktan sonra kolayca projeye eklenmesini sağlamak amacıyla Visual Studio üzerinden Ctrl + Shift + A tuş kombinasyonu yardımıyla Data sekmesi altından Dc ismi ile yeni bir LinqToSqlClasses item’ını ekliyoruz.

Resim-10

LinqToSqlClasses nesnesini de ekledikten sonra oluşturduğumuz veri tabanına bağlanarak bu nesne üzerine tabloların eklenmesi işlemini gerçekleştiriyoruz. Bunun için Dc adını verdiğimiz dc.dbml dosyası açıkken Server Explorer penceresinden veri tabanımıza bağlanıyor ve uygun tabloları sürükle bırak ile ekrana yerleştiriyoruz.

Resim-11

Uygun veri tabanı bağlantısını sağladıktan sonra yukarıdaki gibi tablolarımız görünür hale gelecektir. Burada görüntülenen tabloları seçip sağ taraftaki boşluğa bırakmalıyız. Bu işlemler yapıldığında web.config dosyamızda veri tabanı bağlantı cümleciği bizim için hazırlanmış olacağından bağlantı için ekstra bir işlem yapmayacağız.

Resim-12

Projemize tabloları eklediğimize göre QueryString kullanımına geçebiliriz. Ancak tabloları ekledikten sonra projeyi bir kez ReBuild etmenizde fayda olacaktır.

Artık QueryString yapısını oluşturabiliriz. Bunun için öncelikle Urunler.aspx sayfamızda DataList yardımıyla ürünlerimizi listeleyelim. QueryString yapısına odaklanmak istediğim için veri listeleme işlemlerini hızlı bir şekilde LinqDataSource ve DataList nesneleri ile gerçekleştiriyorum. Urunler.asp sayfamıza bir adet LinqDataSource ve bir adet DataList ekleyelim. LinqDataSource nesnesinin sağ üst köşesindeki çentik yardımı ile nesnemizi bir veri kaynağına bağlayalım ve tablo olarak ürünleri listeleyeceğimiz için TBL_Urunlers’ i seçelim. Ürünlerin ada göre alfabetik gelmesini istiyorsanız Order By seçeneğini kullanabilirsiniz.

 

 

Resim-13

Daha sonra veri kaynağımızı DataList nesnesine bağlayalım ve ürünlerin görüntülenmesini sağlayalım.

Resim-14

Bu işlemden sonra projemizi çalıştırdığımızda aşağıdaki gibi bir görüntü elde etmiş olacağız.

Resim-15

Peki burada ürünleri listeledik ama bir ürüne ait daha detaylı bilgi istiyorsak ne yapmalıyız? Ürün adına veya ürünle ilgili bir bilgiye tıklayınca detay sayfasına giderek yalnızca o ürün için girilmiş detayları göstermek istediğimizde QueryString tam da burada devreye giriyor. Bu işlem için source kısımda DataList içerisine bir adet HyperLink ekleyelim. HyperLink nesnesinin NavigateUrl özelliğine yönlendirilecek sayfamızı yani UrunDetail.aspx’i ve sonuna da ilgili ürünün ID değerinin eklenmesini sağlayalım.

DataList içerisinde Ürün Fiyatı alanının hemen altına Detaylar başlığı ve bir adet HyperLink nesnesi ekliyorum. HyperLink nesnesinin NavigateUrl özelliğine veriyi taşımak istediğim sayfayı, taşımak istediğim veri için kullandığım takma adı ve Eval içerisinde de taşımak istediğim veriye ait veri tabanı içerisinde tabloda kullandığım alan adını belirtiyorum.

Detaylar

<asp:HyperLink ID="HyperLink1" runat="server"

NavigateUrl='<%# "UrunDetail.aspx?UrunID="+ Eval("UrunID")%>'>

Detaylıİncele</asp:HyperLink>

 

Resim-16

Bu eklemeden sonra projeyi yeniden çalıştırdığımızda Detaylı İncele butonuna tıkladığımızda URL satırına dikkat ederseniz seçtiğimiz ürüne ait ID değerinin eklendiğini görebilirsiniz.

Resim-17

Örnek olarak ikinci ürüne yani UrunID:2 olan ürün içerisindeki Detaylı İncele butonuna tıkladığımda URL satırı aşağıdaki gibi görünecektir.

Resim-18

Peki buraya kadar QueryString oluşturmayı öğrenmiş olduk peki yukarıdaki URL satırında da görünen 2 değerini nerede ve nasıl kullanacağız. Aslında işin önemli noktası burası oluyor çünkü bu değere göre ürünün detaylı bilgilerini göstermek istiyoruz. Bunun için yapacağımız işlemler artık Urunler.aspx sayfasında değil detayları göstereceğimiz UrunDetail.aspx sayfasında olacaktır.

UrunDetail.aspx sayfamızı açıp ürüne ait bilgileri ve yanı sıra detaylı bilgileri göstereceğimiz bir yapı oluşturalım. Bunun için sayfaya 5 adet Label nesnesi ekleyelim. Bu nesnelerin başına da html olarak neyi temsil ettiklerini belirten etiketler yazalım.

 

Ürün ID

<br />

<asp:Label ID="lblUrunID" runat="server" Text=""></asp:Label> <br />

Ürün Adı <br />

<asp:Label ID="lblUrunAdi" runat="server" Text=""></asp:Label> <br />

Ürün Markası <br />

<asp:Label ID="lblUrunMarkasi" runat="server" Text=""></asp:Label> <br />

Ürün Fiyatı <br />

<asp:Label ID="lblUrunFiyati" runat="server" Text=""></asp:Label> <br />

<b> Ürün Detayı</b> <br />

<asp:Label ID="lblDetay" runat="server" Text="" Font-Italic="true"></asp:Label> <br />

 

 

Bu şekilde form görüntüsünü tamamladıktan sonra kod tarafına geçerek QueryString’ten gelen UrunID değerini yakalayıp yazacağımız bir sorguda ürün detaylarının bu ID değerine sahip ürüne göre getirilmesini sağlayacağız.

Urunler.aspx sayfasındaki HyperLink nesnesi ile gönderdiğimiz veriye takma ad olarak UrunID demiştik zaten veri tabanında da tablo içerisinde bu verinin alan adı UrunID şeklindedir. Şimdi UrunID takma adı ile gönderilen veriyi UrunDetail.aspx sayfasında yakalamak için aşağıdaki kodu kullanalım.

string GelenID =  Request.QueryString[“UrunID”];

Bu kod ile GelenID isminde string türünde bir değişken oluşturuyor bu değişkene de yakaladığımız veriyi atıyoruz.

 

Resim-19

Şimdi buraya breakpoint koyarak gerçekten tıkladığımız buton bize gerçek ID değerini veriyor mu bunun kontrolünü yapalım. String değişkenin başına bir adet breakpoint koyduktan sonra projemizi Urunler.aspx sayfası ile çalıştıralım. Bu sefer gelen kayıtlardan en üsttekine yani ID değeri 1 olan Bilgisayar adındaki ürüne ait detayları incele butonuna tıklıyorum. Tıklama işleminden hemen sonra Visual Studio break point koyduğumuz yere odaklanıyor ve F10 ile bir kez devam ettiğimizde GelenID değişkeninin üzerine imleç ile geldiğimizde aşağıdaki gibi bir görüntü ile karşılaşıyoruz.

Resim-20

Bu demek oluyor ki QueryString doğru bir şekilde çalışıyor ve neye tıklarsak ona ait ID değerini bize sunuyor.

Artık bu aşamadan sonra GelenID değerini kullanarak bir sorgu yazabilir ve oluşturduğumuz Label nesnelerine ilişkin bilgilerin basılmasını sağlayabiliriz. Bunun için de basit bir linq sorgusu yazıyorum.

Resim-21

Projeyi çalıştırdıktan sonra ürünlerden bir tanesinde Detaylı İncele butonuna tıkladığımda ürüne ait bilgiler ve ürün detayına ait bilgi Label nesnelerine yüklenmiş olacaktır.

Resim-22

QueryString hazırlanması ve kullanılmasını bu şekilde tamamlamış oluyoruz. Link üzerinden veri transferi yaptığımız bu yöntemde birden fazla veriyi taşımak istediğimizde devreye Multiple QueryString yapısı giriyor. Yani çoklu QueryString diyebiliriz. Bu yöntemde de oluşturulan QueryString linkinde ilk takma değişken adının yanına virgül koyarak ikinci takma değişken adını gönderiyoruz. Bunu kullanırken de takma adlara göre kullanım yapabiliyoruz. Şimdi bir örnek ile de Multiple QueryString yapısını inceleyelim.

String.Format ile kurgulandığında aşağıdaki şekilde yapılmaktadır.

Response.Redirect(String.Format(“Urunler.aspx?UrunID={0}&UrunKategori={1}}”,Server.UrlEncode(UrunID),Server.UrlEncode(UrunKategori)));

Normal QueryString örneğinde kurguladığımız DataList içerisinde Eval ile kurgulandığında ise aşağıdaki gibi yapılmaktadır.

<asp:LinkButton ID=”btn_Detay” runat=”server” PostBackUrl='<%# “UrunDetail.aspx?UrunID=”+ Eval(“UrunID”)%>+”&KategoriID=”+ Eval(“KategoriID”)%>’>Detaylı İncele</asp:LinkButton>

 

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://social.msdn.microsoft.com/Forums/tr-TR/home

TAGs: asp.net, asp.net QueryString, Multiple QueryString, URL Veri Taşıma

Bu İçeriğe Tepkin Ne Oldu?
  • 8
    harika_
    Harika!!
  • 2
    be_enmedim
    Beğenmedim
  • 1
    _ok_iyi
    Çok iyi
  • 1
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Konya Teknik Üniversitesi Bilgisayar Mühendisliği Doktora programında tez dönemi öğrenciliğim devam etmektedir.İş hayatıma Vodafone'da Test Mühendisi olarak başladıktan sonra şuan bir üniversitede Sistem Uzmanı ve Siber Güvenlik Ofis Yöneticisi pozisyonunda çalışmaktayım.Başlıca uzmanlık alanlarım arasında Sistem yöneticiliği ve Siber Güvenlik gelmektedir.Asp.net ile Proje Geliştirme (2015), Bilgisayar Mühendisliğine Giriş (2020), Güvenlik Tasarım Desenleri (2022) kitaplarının yazarıyım.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (2)

  1. Hocam Emeklerinize Sağlık;
    Çalıştığım firmada Rol bazlı asp.net webforms uygulaması var ve bunun geliştirilmesi gerekli sizce yazılı döküman veya ne önerirsiniz geliştirebilmem için kendimi şimdiden teşekkürler.

    • Merhaba mevcut projeniz eğer ki web forms üzerinden geliştirilmeye devam edilecek ise Rol ve authorization işlemlerini barındırdığı secure design patternler sebebiyle asp.net membership ile halledebilirsiniz. Web Forms ile ilgili kaynak arayışınıza internet araştırmalarını, çeşitli kitapları ve tabiki MSDN kütüphanesini önerebilirim.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir