QueryString ile bilgi taşıma

ASP.NET ‘de sayfalar arası bilgi taşımak için kullanılan yollarından biridir. Aynı zamanda en basit olanıdır. Birçok siteyi gezdiğinizde url kısmında anlamsız şeyler görürsünüz. Url’leleri daha anlamlı kılmaya çalışacağız. İsterseniz bunu daha detaylı olarak inceleyelim. Şimdi bir ASP.NET projesi açalım. İçinde default.aspx ve default2.aspx adında iki sayfa olsun. Defaul.aspx sayfasına da bir buton ve iki adet de textbox atalım.

Şimdi Buton’a çift tıklayarak aşağıdaki kodları yazalım.

protected void Button1_Click(object sender, EventArgs e){

Response.Redirect("default2.aspx?bilgi=" + TextBox1.Text);// TextBox1 deki bilgiyi alarak default2.aspx sayfasına yönlendirir.

}

Burada textBox1 içindeki değeri alıp bunu query string içinde default2.aspx sayfasına taşıyoruz.

Şimdi default2.aspx sayfasına çift tıklayarak page_load olayına gidelim. Ve aşağıdaki kodları yazalım.

protected void Page_Load(object sender, EventArgs e)

{

string gelen= Request.QueryString["bilgi"].ToString(); //QueryString içerisindeki bilgi isimli değeri okuyoruz ve bunu bir string değişkene atıyoruz.

Response.Write(gelen); // QueryString'den aldığımız gelen bilgiyi sayfaya yazdırıyoruz.

}

Bu kodla da default.aspx sayfasından query string ile yolladığımız bilgi değerini okuyup bunu sayfaya yazdırıyoruz. F5 ile projeyi çalıştırıp deneyin. Textbox1 içine yazdığınız değerin default2 sayfasına yazılmış olduğunu göreceksiniz.

Şimdi de birden fazla değeri nasıl yolayacağımıza bakalım. Bu sefer buton’un click olayına aşağıdaki kodları yazalım.

protected void Button1_Click(object sender, EventArgs e)

{

Response.Redirect("default2.aspx?bilgi=" + TextBox1.Text + "&bilgi2=" + TextBox2.Text); // TextBox1 ve TexBox2 deki bilgileri alıp default2.aspx sayfasına yönlenir.

}

Gördüğünüz gibi iki farklı değeri query stirng ile taşıdık. texBox1 içine yakup, textBox2 içinde de buğra yazdığımızı varsayarsak sorgu şu şeklde oluyor:

default.aspx?bilgi=yakup&bilgi2=bugra
Burdaki & karakteri iki farklı bilgiyi birleştirmek için kullanılır. O halde kaç farklı bilgi gönderirsek ona göre aralara & karakteri koymalıyız.

Default2.aspx sayfasının page_load olayına bu sefer aşağıdaki kodları yazalım.

protected void Page_Load(object sender, EventArgs e)

{

string gelen = Request.QueryString["bilgi"].ToString(); //QueryString içindeki bilgi isimli değeri okuyoruz.

string gelen2 = Request.QueryString["bilgi2"].ToString(); // QueryStrin içindeki bilgi2 isimli değeri okuyoruz.

Response.Write(gelen+" "+gelen2);

}

Gördüğünüz gibi gelen iki farklı bilgiyi de isimlerini kullanarak okuyoruz. Farklı bir yöntem olarak da index kullanıp okuyabiliriz.

string gelen = Request.QueryString[0].ToString(); //QuerStringg içindeki ilk değeri okur.string gelen2 = Request.QueryString[1].ToString(); //QueryString içindeki ikinci değeri okur.

Ayrıca bir de Response.Redirect(); metodu yerine Server.Transfer(); metodunu da kullanabiliriz. Bu metod kullanıldığında tarayıcı bir sayfaya yönlendirilirken tarayıcının url adresini değişmez. Yani QueryString içinde yolladığınız bilgiler de gözükmez.

Server.Transfer("default2.aspx?bilgi=" + TextBox1.Text);

Çalıştırdığınızda göreceksiniz ki url adresi /default.aspx olarak gözükmektedir.

QueryString hakkında bilgilerimiz bukadar. ASP.NET için ilk konulardn olduğu için en basit dizeyde anlatmaya çalıştım. İnşallah faydalı olur.