2009-04-09 18 views
13

estoy usando:¿Cuál es la mejor manera de ver si RadioButtonList tiene un valor seleccionado?

if (RadioButtonList_VolunteerType.SelectedItem != null) 

o cómo sobre: ​​

if (RadioButtonList_VolunteerType.Index >= 0) 

o acerca de cómo (por la respuesta de Andrew Hare):

if (RadioButtonList_VolunteerType.Index > -1) 

Para aquellos que puedan leer esta pregunta, el siguiente no es un método válido. Como señaló Keltex, el valor seleccionado podría ser una cadena vacía.

if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue)) 

Respuesta

9

En términos de facilidad de lectura que todos ellos carecen de algo para mí. Esto parece ser un buen candidato para un método de extensión.

public static class MyExtenstionMethods 
{ 
    public static bool HasSelectedValue(this RadioButtonList list) 
    { 
    return list.SelectedItem != null; 
    } 
} 


... 

if (RadioButtonList_VolunteerType.HasSelectedValue) 
{ 
// do stuff 
} 
+0

Por cierto, debería ser "return list.SelectedItem! = Null". –

+0

buen punto, voy a editar el error. –

8

Todas estas son formas válidas y perfectamente legítimas de verificar el valor seleccionado. Personalmente encuentro

RadioButtonList_VolunteerType.SelectedIndex > -1 

para ser el más claro.

0

recomiendo:

RadioButtonList_VolunteerType.SelectedIndex>=0. 

De acuerdo con la Microsoft Documentation:

El índice ordinal más bajo de los elementos seleccionados en la lista. El valor predeterminado es -1, lo que indica que no se seleccionó nada.

String.IsNullOrEmpty (RadioButtonList_VolunteerType.SelectedValue) se no siempre funciona como se puede tener un ListItem con un valor vacío:

<asp:ListItem Value=''>This item has no value</asp:ListItem> 
0

La pregunta gira más en torno a si se debe verificar el valor nulo o de comprobación de un int. gran método de extensión de Martin también se podría escribir:

public static bool HasSelectedValue(this ListControl list) 
{ 
    return list.SelectedIndex >= 0; 
} 

La documentación de MSDN para una ListControl afirma:

defecto para SelectedItem is null.

Predeterminado para SelectedIndex is -1.

Así que, o bien son formas válidas y ambos funcionan. La pregunta es cuál es la mejor manera. Supongo que SelectedIndex es una operación de tipo de valor en lugar de una operación de tipo de referencia. Pero no tengo nada que respalde eso.

Cuestiones relacionadas