State Management - 2.1 Query String

07 Şubat 2007 – 01:17
2.1   Query String:

QueryString metoduyla her internet kullanıcısı günde defalarca karşı karşıya kalmaktadır.Query String metodu daha çok arama motorlarında kullanılmıştır.Örnek olarak  google ve Yahoo arama motorları verilebilir.
            Query String metodunda bilgi adından da anlaşılacağı üzere string katarlar olarak depolanmaktadır.(Örn: www.google.com/search?q=Eskişehir Osmangazi Üniversitesi) Bu metodun tercih sebebi serverda ve sayfada fazla yük yapmamasıdır.Yük olmamasına rağmen kullanımında önemli bazı kısıtlamalar mevcuttur.

 

Her internet tarayıcısı URL’sinin uzunluğunu sınırlamıştır.Bu sebepten dolayı URL’ye çok fazla bir bilgi girilemez dahası tarayıcılar arası uyumu gözetmek zorunda kalabilirsiniz.

Bu veri her kullanıcıya ve online olan herkesin ulaşımına açıktır.Bu yüzden de dış kullanıcı değiştirmek isteyebilir .Değişirse programınız bunun ne olduğunu anlayamaz ve hata oluşur. Kullanım amacı buna göre seçilmelidir

Dikkat edilmesi gereken en önemli özellikleriden biri de legal karakter içermesi gerekliliğidir.Komplex karakterler kullanılamaz.

*** Query String metodu view state gibi değildir tamamiyle erişilebilir.Bu yüzden  gizli olması gereken veriler için kullanmayın ya da şifreleyin
 

Bir örnek vermek gerekirse; düşünün ki bir e-ticeret siteniz var kullanıcınız için ürün ayrıntılarını başka bir sayfada gösteriyorsunuz.Ürünün ID sini özelliklerini Query Stringle iletelim.İlkin aşağıdaki sayfa dizaynını gerçekleştirelim.

 
 

Sayfamız ürünleri sıralamak için ListBox(LstItems) ,tüm ayrıntıyı seçebilmek için bir  CheckBox (ChckFull) ve ayrıntıyı görüntüleyebilmek için de bir butona(cmdView) sahiptir
İlk Sayfanın kodu şöyle olmalıdır.

 

public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button cmdView;
protected System.Web.UI.WebControls.ListBox LstItems;
protected System.Web.UI.WebControls.Label LblError;
protected System.Web.UI.WebControls.CheckBox ChckFull;
private string contents;

protected void Page_Load(object sender, System.EventArgs e)
{
LstItems.Items.Add("Beko TFG2000 Çamaşır Makinesi");
LstItems.Items.Add("Bosch E210 Çamaşır Makinesi");
LstItems.Items.Add("Ariston WQ400 Çamaşır Makinesi");
LstItems.Items.Add("Arçelik A990 Çamaşır Makinesi");
LstItems.Items.Add("Lesita L365 Çamaşır Makinesi");
}

            #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

private void InitializeComponent()
{   
this.cmdView.Click += new System.EventHandler(this.cmdView_Click);
this.Load += new System.EventHandler(this.Page_Load);

            }
#endregion

      private void cmdView_Click(object sender, System.EventArgs e)
{
if(LstItems.SelectedIndex==-1)
{
LblError.Text="Bir Ürün Seçmelisiniz…";
}
else
{
string url="NewPage.aspx?";
url+="Item= "+LstItems.SelectedItem.Text+"&";
url+="Mode= "+ChckFull.Checked.ToString();
Response.Redirect(url);
}
}                

}
}

 

 

Görebileceğiniz gibi Query Stringe geçerli olmayan karakter bilgileri gönderdik mesela boşluk karakteri,“Ç”harfi hepsi için ASP.NET in bir şifreleme yöntemi vardır.Boşluk için %20  ‘Ç’ karakteri için %c3%87 …..
Bilgiyi alan sayfa bu stringi sorun çıkmadan  orijinal haliyle alır

 

 

2.sayfanın oluşabilmesi için aşağıdaki kodu oluşturmak gereklidir

 

public class NewPage :System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label LblAyrıntı;
protected System.Web.UI.HtmlControls.HtmlGenericControl FONT1;
protected System.Web.UI.WebControls.Label LblInfo;

private void Page_Load(object sender, System.EventArgs e)
{
LblAyrıntı.Visible=false;
LblInfo.Text="Item"+Request.QueryString["Item"];
LblInfo.Text+="<br/>Tüm Ayrıntı:";
LblInfo.Text+=Request.QueryString["Mode"];
if(Request.QueryString["Mode"]=="true")
{LblAyrıntı.Visible=true;
}

      }
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{

InitializeComponent();
base.OnInit(e);
}

private void InitializeComponent()
{   
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}

 
 
Bookmark and Share

Post a Comment

Subscribe without commenting