2009-04-09 8 views
13

내가 사용하고 있습니다 :RadioButtonList에 선택된 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까?

if (RadioButtonList_VolunteerType.SelectedItem != null) 

또는 방법에 대한 :

if (RadioButtonList_VolunteerType.Index >= 0) 

또는 방법 (앤드류 토끼의 대답 당)에 대한이 질문을 읽을 수 있습니다 사람들에게

if (RadioButtonList_VolunteerType.Index > -1) 

, 다음은 유효한 방법이 아닙니다. Keltex가 지적했듯이, 선택된 값은 빈 문자열 일 수 있습니다.

if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue)) 

답변

9

는 그들 모두가 나를 위해 뭔가 부족하다. 이것은 확장 메소드에 대한 좋은 후보로 보입니다.

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


... 

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

그건 그렇고, "return list.SelectedItem! = null"이어야합니다. –

+0

좋은 지적, 내가 오류를 수정합니다. –

8

이들은 모두 합당하고 합법적으로 선택한 값을 확인하는 방법입니다. 개인적으로 찾았습니다

RadioButtonList_VolunteerType.SelectedIndex > -1 

이 가장 깨끗하게 표시됩니다.

0

내가 추천 :

RadioButtonList_VolunteerType.SelectedIndex>=0. 

Microsoft Documentation에 따르면

목록에서 선택한 항목의 최저 서수 인덱스입니다. 기본값은 -1이며 아무 것도 선택되지 않았 음을 나타냅니다.

string.IsNullOrEmpty (RadioButtonList_VolunteerType.SelectedValue) 당신이 빈 값으로하여 ListItem을 가질 수 항상 작동하지 않습니다 : 가독성의 측면에서

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

질문은 null을 확인하거나 int의 값을 확인할지 여부에 대해 자세히 다루고 있습니다. 마틴의 큰 확장 방법도 쓸 수있다 :

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

ListControl의에 대한 MSDN 문서 상태 : SelectedItem is null에 대한

기본.

기본값은 SelectedIndex is -1입니다.

유효한 방법과 둘 다 작동합니다. 문제는 가장 좋은 방법입니다. 그것은 참조 형식 작업 대신 값 형식 작업이므로 SelectedIndex 추측하고있어. 그러나 나는 그걸 뒷받침 할 어떤 것도 가지고 있지 않습니다.

관련 문제