1

、、ListControlなどから派生したリストコントロールには、のリストが入力されます。Aにはとプロパティがあります。DropDownListListBoxRadioButtonListListItemListItemValueText

ListControl現在選択されているアイテムにアクセスするための次の方法を提供します。

  • ListControl.SelectedItem現在選択されているを返しますListItem
  • ListControl.SelectedValueValue現在選択されているのプロパティを返しますListItem

さて、興味深いのは:

  • ListControl.Textとまったく同じ値を返しますListControl.SelectedValue。予想通り、戻りませSelectedItem.Text

これは仕様によるものです

ListControl.Textプロパティ

ListControlコントロールのSelectedValueプロパティを取得または設定します。

[...]

備考

Textプロパティは、SelectedValueプロパティと同じ値を取得および設定します。

これは直感に反しているようで、人々を混乱させます。私の質問は:なぜそれがこのように行われたのですか?Textインターフェイスを実装するにはプロパティを提供する必要があると想像できますが、一体なぜ、プロパティではなくListItemITextControlのを返すように選択するのでしょうか。ValueText

4

2 に答える 2

0

.NET Reflector を使用する前に確認しました。ListItem.Text が null の場合、代わりに ListItem.Value を返します。それが null の場合は、空の文字列を返します。ListItem.Value に対しても逆に機能します。したがって、これを行うのは ListControl ではなく、選択された項目自体です。

HTH。

于 2011-03-08T12:48:11.097 に答える
0

ITextControlASPX ページを処理するために使用されるコードが、インターフェイスを使用してすべてのコントロールを定義する場合、Textプロパティは使用可能な唯一のプロパティです。を処理するときListControl、私が書くビジネス ロジックのほとんどは、テキストではなく、選択された項目の値を気にします。したがって、私の意見では、現在の動作は、必ずしも期待される動作でなくても、望ましい動作です。

于 2013-10-16T19:19:38.273 に答える