Как лучше всего проверить, есть ли у RadioButtonList выбранное значение? - PullRequest
14 голосов
/ 10 апреля 2009

Я использую:

if (RadioButtonList_VolunteerType.SelectedItem != null)

или как насчет:

if (RadioButtonList_VolunteerType.Index >= 0)

или как насчет (согласно ответу Эндрю Хэра):

if (RadioButtonList_VolunteerType.Index > -1)

Для тех, кто может прочитать этот вопрос, следующий метод не является допустимым . Как указывал Keltex, выбранное значение может быть пустой строкой.

if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))

Ответы [ 4 ]

10 голосов
/ 10 апреля 2009

Это все действительные и совершенно законные способы проверки выбранного значения. Лично я нахожу

RadioButtonList_VolunteerType.SelectedIndex > -1

чтобы быть самым ясным.

9 голосов
/ 10 апреля 2009

С точки зрения читабельности им всем что-то не хватает для меня. Это кажется хорошим кандидатом на метод расширения.

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


...

if (RadioButtonList_VolunteerType.HasSelectedValue)
{
 // do stuff
}
0 голосов
/ 19 июля 2012

Вопрос вращается больше вокруг того, проверять ли на null или проверять значение типа int. Великий метод расширения Мартина также может быть написан:

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

Документация MSDN для ListControl гласит:

Значение по умолчанию для Выбранный элемент равен нулю .

По умолчанию для SelectedIndex является -1 .

Так что либо допустимы, и оба работают. Вопрос в том, какой путь самый лучший. Я предполагаю SelectedIndex, поскольку это операция типа значения, а не операция ссылочного типа. Но мне нечем это подтвердить.

0 голосов
/ 10 апреля 2009

Рекомендую:

RadioButtonList_VolunteerType.SelectedIndex>=0. 

Согласно документации Microsoft :

Самый низкий порядковый номер выбранных элементов в списке. По умолчанию -1, что означает, что ничего не выбрано.

string.IsNullOrEmpty (RadioButtonList_VolunteerType.SelectedValue) будет не всегда работать , поскольку вы можете иметь ListItem с пустым значением:

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