Qual é a melhor maneira de ver se um RadioButtonList tem um valor selecionado?
-
09-09-2019 - |
Pergunta
Eu estou usando:
if (RadioButtonList_VolunteerType.SelectedItem != null)
ou como sobre: ??
if (RadioButtonList_VolunteerType.Index >= 0)
ou como sobre (por resposta de Andrew Hare):
if (RadioButtonList_VolunteerType.Index > -1)
Para aqueles que podem ler esta pergunta, o seguinte não é um método válido . Como Keltex apontou, o valor selecionado pode ser uma string vazia.
if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))
Solução
Em termos de legibilidade todos eles falta alguma coisa para mim. Este parece ser um bom candidato para um método de extensão.
public static class MyExtenstionMethods
{
public static bool HasSelectedValue(this RadioButtonList list)
{
return list.SelectedItem != null;
}
}
...
if (RadioButtonList_VolunteerType.HasSelectedValue)
{
// do stuff
}
Outras dicas
Essas são todas as formas válidas e perfeitamente legítimos de verificação de um valor selecionado. Pessoalmente acho
RadioButtonList_VolunteerType.SelectedIndex > -1
para ser o mais claro.
Eu recomendo:
RadioButtonList_VolunteerType.SelectedIndex>=0.
De acordo com a Microsoft Documentação :
O menor índice ordinal dos itens selecionados na lista. O padrão é -1, que indica que nada está selecionado.
string.IsNullOrEmpty (RadioButtonList_VolunteerType.SelectedValue) nem sempre trabalho como você pode ter um ListItem com um valor vazio:
<asp:ListItem Value=''>This item has no value</asp:ListItem>
A questão gira mais em torno de se verificar para nulo ou verificar o valor de um int. grande método de extensão de Martin também poderia ser escrito:
public static bool HasSelectedValue(this ListControl list)
{
return list.SelectedIndex >= 0;
}
A documentação do MSDN para um ListControl estados:
Assim, ou são formas válidas e tanto trabalho. A questão é qual é o melhor caminho. Eu estou supondo SelectedIndex como é uma operação de tipo de valor, em vez de operação de tipo de referência. Mas eu não tenho nada para fazer isso com.