Lista suspensa Masterpage não mantendo o índice selecionado
-
03-07-2019 - |
Pergunta
OK, minha página -masma tem um suspensão que controla o tamanho que afeta muitas coisas. Preciso acessar o índice suspenso das páginas de conteúdo para fazer isso usando este código.
public partial class MasterPage : System.Web.UI.MasterPage
{
public DropDownList MySize { get { return _ddlSize; } }
}
Estou usando o Ajax e quando o tamanho altera o menu na página master muda muito bem.
Mas quando clico no menu atualizado, ele usa o índice zero da lista suspensa na minha página de conteúdo, mesmo com visualmente, ele mostra o tamanho que selecionei.
int size = Convert.ToInt32(Master.MySize.SelectedItem.Text); //Uses 0 index :(
Não quero usar a sessão, simplesmente não entendo por que isso não funciona 100% do tempo. Alguém tem alguma ideia?
Solução
Eu descobri!
Eu defino o menu suspenso para um objeto estático público
public static DropDownList MySize;
Em seguida, basta defini -lo igual à instância da página sempre que a página master carregada.
protected void Page_Load(object sender, EventArgs e)
{
MySize = _ddlSize;
}
Chamar a lista suspensa é um pouco diferente, pois é um objeto estático.
MasterPage.MySize.SelectedItem.Text
Mas funciona em todas as páginas de conteúdo que derivam da página master.
Outras dicas
Você verificou esta solução em um cenário de vários usuários, pois o valor é estático, ela será refletida em diferentes usuários
O estado de exibição definido na página mestre deve manter o valor suspenso ou tentar usar controles ocultos para sustentar o valor