2013-11-14 19 views
5

Ho un modulo web in .NET usando ASP e C#. Questo modulo ha un controllo DropDownList con la sua AutoPostBack proprietà impostata su True.Come utilizzare correttamente QueryString in ASP C# .NET?

Alcuni dati sul modulo vengono visualizzati quando l'utente seleziona un elemento da DropDownList.

Ora, desidero che l'utente sia in grado di condividere i propri dati copiando semplicemente l'URL su cui è presente QueryString come http://www.site.com?ProdID=1234.

ho fatto quanto segue per cercare di raggiungere questo obiettivo:

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"])); 
    } 
} 

Il problema con questo codice è che quando l'utente sceglie un elemento diverso dal DropDownList sua voce selezionata viene sovrascritto dal Page_Load () dato che ora abbiamo una QueryString sull'URL. (Costruisco QueryString e quindi utilizzo il metodo Redirect() sulla stessa pagina su un evento)

Quindi la mia domanda qui è: è possibile continuare a cambiare la stringa di query dell'URL al volo quando l'utente cambia il selezionato elemento da DropDownList e visualizza i dati corretti nel modulo per l'elemento selezionato?

Ho la sensazione che questo sia come il problema del pollo o dell'uovo.

Grazie.

+0

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

risposta

10

Controllare se la pagina è postback al server, insieme con la logica esistente, in questo modo:!!

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