查看 RadioButtonList 是不是具有选定值的最佳方法是啥?
Posted
技术标签:
【中文标题】查看 RadioButtonList 是不是具有选定值的最佳方法是啥?【英文标题】:What is the best way to see if a RadioButtonList has a selected value?查看 RadioButtonList 是否具有选定值的最佳方法是什么? 【发布时间】:2010-10-18 15:47:40 【问题描述】:我正在使用:
if (RadioButtonList_VolunteerType.SelectedItem != null)
或者怎么样:
if (RadioButtonList_VolunteerType.Index >= 0)
或者怎么样(根据 Andrew Hare 的回答):
if (RadioButtonList_VolunteerType.Index > -1)
对于可能阅读此问题的人,以下方法无效。正如 Keltex 指出的那样,所选值可能是一个空字符串。
if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))
【问题讨论】:
【参考方案1】:这些都是检查选定值的有效且完全合法的方法。我个人觉得
RadioButtonList_VolunteerType.SelectedIndex > -1
要最清楚。
【讨论】:
【参考方案2】:我推荐:
RadioButtonList_VolunteerType.SelectedIndex>=0.
根据Microsoft Documentation:
列表中所选项目的最低序号。默认为-1,表示未选择任何内容。
string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue) 将并不总是有效,因为您可以拥有一个空值的 ListItem:
<asp:ListItem Value=''>This item has no value</asp:ListItem>
【讨论】:
【参考方案3】:就可读性而言,它们对我来说都缺乏一些东西。这似乎是扩展方法的一个很好的候选。
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"。【参考方案4】:这个问题更多地围绕着是检查 null 还是检查 int 的值。马丁伟大的扩展方法也可以写成:
public static bool HasSelectedValue(this ListControl list)
return list.SelectedIndex >= 0;
ListControl 的 MSDN 文档指出:
SelectedItem is null 的默认值。
SelectedIndex is -1 的默认值。
所以任何一种都是有效的方法,而且都有效。问题是哪种方法最好。我猜 SelectedIndex 因为它是值类型操作而不是引用类型操作。但我没有任何证据支持。
【讨论】:
以上是关于查看 RadioButtonList 是不是具有选定值的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 RadioButtonList 中选择 CheckBox 时显示 TextBox 和 Label