如何判断一个RadioButtonList是否有选中的值?最佳方法是什么?

18

我正在使用:

if (RadioButtonList_VolunteerType.SelectedItem != null)

或者这样怎么样:

if (RadioButtonList_VolunteerType.Index >= 0)
或者考虑使用(根据Andrew Hare的回答):
if (RadioButtonList_VolunteerType.Index > -1)

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

if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))
4个回答

12

这些都是检查选定值的有效且完全合法的方法。个人而言,我认为

RadioButtonList_VolunteerType.SelectedIndex > -1

让它变得更清晰。


11

就可读性而言,它们都缺少一些东西。这似乎是一个很好的扩展方法候选。

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


...

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

顺便说一下,应该是“return list.SelectedItem != null”。 - John B

1
问题更多地围绕着是检查 null 还是检查 int 的值。马丁的扩展方法也可以这样写:
public static bool HasSelectedValue(this ListControl list)
{
    return list.SelectedIndex >= 0;
}

关于ListControl的MSDN文档如下:

SelectedItem的默认值为null。

SelectedIndex的默认值为-1。

因此,两种方式都是有效的,都可以工作。问题是哪种方式最好。我猜测使用SelectedIndex,因为它是值类型操作而不是引用类型操作。但我没有任何依据来支持这一点。


0

我推荐:

RadioButtonList_VolunteerType.SelectedIndex>=0. 

根据Microsoft文档

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接