16

我在用:

if (RadioButtonList_VolunteerType.SelectedItem != null)

或者怎么样:

if (RadioButtonList_VolunteerType.Index >= 0)

或者怎么样(根据安德鲁黑尔的回答):

if (RadioButtonList_VolunteerType.Index > -1)

对于可能阅读此问题的人,以下方法不是有效的方法。正如 Keltex 指出的那样,所选值可能是一个空字符串。

if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))
4

4 回答 4

11

这些都是检查选定值的有效且完全合法的方法。我个人觉得

RadioButtonList_VolunteerType.SelectedIndex > -1

是最清楚的。

于 2009-04-09T20:16:26.660 回答
10

在可读性方面,它们对我来说都缺乏一些东西。这似乎是扩展方法的一个很好的候选者。

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


...

if (RadioButtonList_VolunteerType.HasSelectedValue)
{
 // do stuff
}
于 2009-04-09T21:19:02.267 回答
0

我建议:

RadioButtonList_VolunteerType.SelectedIndex>=0. 

根据微软文档

列表中选定项目的最低序号索引。默认值为 -1,表示未选择任何内容。

string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue)并不总是有效,因为您可以拥有一个空值的 ListItem:

<asp:ListItem Value=''>This item has no value</asp:ListItem>
于 2009-04-09T20:23:35.393 回答
0

问题更多地围绕是否检查null或检查int的值。马丁的伟大扩展方法也可以写成:

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

ListControl 的 MSDN 文档指出:

SelectedItem 的默认值为 null 。

SelectedIndex 的默认值为 -1

因此,两者都是有效的方法,并且都有效。问题是哪种方法最好。我猜 SelectedIndex 因为它是值类型操作而不是引用类型操作。但我没有什么可以支持的。

于 2012-07-19T13:23:10.777 回答