Elenco a discesa Masterpage che non mantiene l'indice selezionato
-
03-07-2019 - |
Domanda
Ok, la mia pagina principale ha un menu a discesa che controlla le dimensioni che influiscono su molte cose. Devo accedere all'indice a discesa dalle pagine di contenuti, quindi lo faccio utilizzando questo codice.
public partial class MasterPage : System.Web.UI.MasterPage
{
public DropDownList MySize { get { return _ddlSize; } }
}
Sto usando Ajax e quando le dimensioni cambiano il menu sulla Pagina Master cambia bene.
Ma quando faccio clic sul menu aggiornato, utilizza l'indice zero dell'elenco a discesa sulla mia pagina dei contenuti, anche attraverso visivamente mostra la dimensione che ho selezionato.
int size = Convert.ToInt32(Master.MySize.SelectedItem.Text); //Uses 0 index :(
Non voglio usare Session, non capisco perché non funziona al 100% delle volte. Qualcuno ha qualche idea?
Soluzione
L'ho capito!
Ho impostato il menu a discesa su un oggetto statico pubblico
public static DropDownList MySize;
Quindi l'ho appena impostato uguale all'istanza di pagina ogni volta che la pagina principale è stata caricata.
protected void Page_Load(object sender, EventArgs e)
{
MySize = _ddlSize;
}
La chiamata a DropDownList è leggermente diversa poiché è un oggetto statico.
MasterPage.MySize.SelectedItem.Text
Ma funziona su tutte le pagine di contenuti che derivano dalla pagina principale.
Altri suggerimenti
hai verificato questa soluzione in uno scenario multiutente, poiché il valore è statico si rifletterà su diversi utenti
lo stato di visualizzazione impostato nella pagina principale deve conservare il valore degli elenchi a discesa o provare a utilizzare i controlli nascosti per contenere il valore