查看 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

asp:radiobuttonlist css 样式

设置从代码隐藏中选择的 Radiobuttonlist

asp.net,radiobuttonlist,在 url 中显示记录号

强类型 RadioButtonlist

如何确定 JavaScript 中 RadioButtonList 的 SelectedValue?