2013-11-14 35 views
5

Mam formularz sieci web w .NET przy użyciu ASP i C#. Ten formularz ma kontrolkę DropDownList z jego właściwością AutoPostBack ustawioną na True.Jak prawidłowo używać QueryString w .NET ASP C#?

Niektóre dane w formularzu są wyświetlane, gdy użytkownik wybierze element z DropDownList.

Teraz chcę, aby użytkownik mógł udostępniać swoje dane, kopiując adres URL z tekstem QueryString, takim jak http://www.site.com?ProdID=1234.

Zrobiłem następujące czynności, aby spróbować osiągnąć ten cel:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // check if the URL has a QueryString item if yes the use it. 
    if (!String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
    { 
     ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
    } 
} 

Problem z tym kodem jest, że gdy użytkownik wybierze inną pozycję z DropDownList jego lub jej wybrany element zostaje zastąpione przez Page_Load (), ponieważ mamy teraz QueryString na URL. (Buduję QueryString, a następnie używam metody Przekierowania() na tę samą stronę w Wydarzeniu)

Moje pytanie brzmi: czy możliwe jest ciągłe zmienianie ciągu zapytań adresu URL, gdy użytkownik zmieni wybrane element z DropDownList i wyświetlić odpowiednie dane w formularzu dla wybranego elementu?

Mam przeczucie, że to jest jak problem z kurczakiem lub jajkiem.

Dziękuję.

+0

'if (Page.IsPostBack && string.IsNullOrEmpty (Request.QueryString [ "ProdID"])) ' – asawyer

Odpowiedz

10

Sprawdź, czy strona jest delegowanie do serwera wraz z istniejącą logikę, tak:!

if(!IsPostBack && !String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
{ 
    ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
}