ASP.NET ‘ te YOLLADIĞIMIZ QUERY STRİNGLERİN ADINI ÖĞRENME

Bazı durumlarda tek sayfa üzerinde, yolladığımız query string in adına göre işlem yapmak isteyebiliriz. Benim bunu en çok kullandığım alanlardan biride arama işlemleridir. Örneğin, bir kişinin hangi sınavlara girdiğini TCKimlik Numarasını yada adını soyadını girerek sorgulatmak istiyorsunuz. Bu gibi durumlarda tckimlikno için ayrı bir sayfa adsoyad aramaları için ayrı bir sayfa tasarlamanız gerekli. Ayrıca iki sorgulama sonucunda aynı sonuçlar geleceği için ve tasarımındaki sayfada aynı olması gerekeceği için bu çok zahmetli bir iş olacaktır. Bunun yerine aynı sayfa üzerinden gelen query string in adina gore sql sorgunuzu değiştirmek yeterli olacaktır.

Örneğimiz için Ogrencisonuclari.aspx adında bir sayfamız olduğunu varsayalım ve TCNo girerek yaptığımız sorgulamalarda ogrencisonuclari.aspx?tcno=28846499621 adında bir query string yollayalım. Ad soyad sorgulamalarında ise ogrencisonuclari.aspx?adsoyad=SalihDemirog adında qs yolladığımızı düşünelim. Bu durumda querystring imizin adını bilmek işimizi çözecektir.

Query String imizin adından kastım yukarıdaki örnek için tcno ve adsoyad dır. Query string in adını, değeri ile karıştırmayalım. Yukarıda örnek için tcno adlı qs mizin degeri “28846499621”, adsoyad adlı qs mizin degeri ise “SalihDemirog” dur.

Belirtilen querystringin degerini ekrana yazdırmak için

Response.Write(Request.QueryString[“tcno”].ToString());
//yukarıdaki için örnek sayfaya 28846499621 yazar

Querystring in adını öğrenmek için

HttpContext.Current.Request.QueryString.GetKey(0);
//index numarası 0 olan query string in adını getirir
//index numarası 0 olan query string ilk yolladığımız query string dir

Ogrencisonuclari.aspx?tcno=12345678901&durum=aktif örneği için

Response.Write(HttpContext.Current.Request.QueryString.GetKey(0)); //sayfaya tcno yazar

Response.Write(HttpContext.Current.Request.QueryString.GetKey(1)); //sayfaya durum yazar

Daha iyi anlamak için bir örnek üzerinde açıklayalım.

Default.aspx için sayfa tasarımımız aşağıdaki gibi olsun

asp-nette-yolladigimiz-query-strigle-1

asp-nette-yolladigimiz-query-strigle-1

Kod bloğumuzda aşağıdaki gibi olsun

protected void butonadsoyad_Click(object sender, EventArgs e)
{
Response.Redirect(“ogrencisonuclari.aspx?adsoyad=”+TextBox1.Text);
}
protected void butontckimlikno_Click(object sender, EventArgs e)
{
Response.Redirect(“ogrencisonuclari.aspx?tcno=” + TextBox2.Text);
}
Öğrencisonuclari.aspx sayfasının page_load eventine sadece konuyu anlamanız adına şöyle bir örnek yapabiliriz.

protected void Page_Load(object sender, EventArgs e)
{
string sorgu;
if (!IsPostBack)
{
if (HttpContext.Current.Request.QueryString.GetKey(0)==”tcno”)
{

sorgu = “select * from sinavlar where tcno=” + Request.QueryString[“tcno”].ToString();
}
else if (HttpContext.Current.Request.QueryString.GetKey(0) == “adsoyad”)
{
sorgu = “select * from sinavlar where adsoyad=” + Request.QueryString[“adsoyad”].ToString();
}
else
{
Response.Write(“Hata oluştu”);
return;
}
}

}

Sonuç olarak gelen qs adına göre sorgumuzu değiştirerek sorgu sonucuna göre kayıtların gelmesini sağlayabiliriz.

Umarım yararlı olmuştur.

Yazan: Salih DEMİROĞ