我正在使用:
if (RadioButtonList_VolunteerType.SelectedItem != null)
或如何:
if (RadioButtonList_VolunteerType.Index >= 0)
或者怎么样(根据Andrew Hare的回答):
if (RadioButtonList_VolunteerType.Index > -1)
对于那些可能阅读此问题的人,以下不是有效的方法。正如Keltex指出的那样,所选值可能是一个空字符串。
if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))
答案 0 :(得分:10)
这些都是检查所选值的有效且完全合法的方法。我个人认为
RadioButtonList_VolunteerType.SelectedIndex > -1
是最清楚的。
答案 1 :(得分:9)
就可读性而言,他们都缺乏一些东西。这似乎是扩展方法的一个很好的候选者。
public static class MyExtenstionMethods
{
public static bool HasSelectedValue(this RadioButtonList list)
{
return list.SelectedItem != null;
}
}
...
if (RadioButtonList_VolunteerType.HasSelectedValue)
{
// do stuff
}
答案 2 :(得分:0)
我建议:
RadioButtonList_VolunteerType.SelectedIndex>=0.
列表中所选项目的最低序号索引。默认值为-1,表示未选择任何内容。
string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue)并不总是有用,因为你可以有一个空值的ListItem:
<asp:ListItem Value=''>This item has no value</asp:ListItem>
答案 3 :(得分:0)
问题更多地围绕是检查null还是检查int的值。马丁的伟大扩展方法也可以写成:
public static bool HasSelectedValue(this ListControl list)
{
return list.SelectedIndex >= 0;
}
ListControl的MSDN文档声明:
SelectedItem is null的默认值。
SelectedIndex is -1的默认值。
所以要么是有效的方式,要么两者都有效。问题是哪种方法最好。我猜测SelectedIndex,因为它是一个值类型操作而不是引用类型操作。但我没有任何东西支持这一点。