16

私は使っている:

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

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

質問は、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 に答える
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 に答える