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))
Foi útil?

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:

SelectedItem é nulo .

SelectedIndex é -1 .

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top