ASP.NET WebForms listbox - cross-pagina di invio messaggi
-
16-10-2019 - |
Domanda
Sono nuovo di ASP.NET, e sto avendo un problema ottenere una casella di riepilogo per restituire i dati corretti quando si postano a un'altra pagina. Ho acquistato DropDownList e pulsanti di opzione al lavoro. Per esempio, per la DropDownList, ho semplicemente fatto questo:
Public ReadOnly Property SiteID() As String
Get
Return ddlSites.SelectedValue
End Get
Poi, nella pagina successiva, sono tornato con successo il valore con PreviousPage.SiteID. Tuttavia, quando provo questo per una casella di riepilogo:
Public ReadOnly Property CustID() As String
Get
Return lstLoggedInCustomers.SelectedValue.ToString
End Get
End Property
quindi chiamare utilizzando IndietroPagina, ottengo una stringa vuota, come SelectedIndex è sempre tornando -1, anche se seleziono un elemento nella casella di riepilogo.
Soluzione
ho avuto una situazione simile. Ho usato l'approccio della user252340 e memorizzare il valore:
Session["MemberName"] = memberName;
e poi nel PageLoad
dell'altra pagina ottenere il valore:
MemberName.Value = Session["MemberName"].ToString();
Spero che questo aiuti
Altri suggerimenti
Il SelectedValue viene letto dal ViewState il postback. Ma il ViewState non è più disponibile nella pagina successiva è. Perché non si salva il SelectedValue nella Sessione in modo da poter fare riferimento ad esso nella pagina successiva?
In questo caso si può persistere il valore nel ViewState prima di reindirizzare a un'altra pagina. Così dalla pagina successiva si chiama proprio come:
Public ReadOnly Property CustID() As String
Get
Return viewstate("myCustID")
End Get
End Property
Spero che funzionerà.