1

派生自 的列表控件,ListControl例如或,由s 的列表填充。A有一个和一个属性。DropDownListListBoxRadioButtonListListItemListItemValueText

ListControl提供以下方法来访问当前选定的项目:

  • ListControl.SelectedItem返回当前选中的ListItem,
  • ListControl.SelectedValue返回Value当前选中的属性ListItem

现在,有趣的是:

  • ListControl.Text返回与 完全相同的值ListControl.SelectedValue。正如人们所期望的那样,它不会返回。SelectedItem.Text

这是设计使然

ListControl.Text 属性

获取或设置 ListControl 控件的 SelectedValue 属性。

[...]

评论

Text 属性获取和设置与 SelectedValue 属性相同的值。

这似乎违反直觉并且使人们感到困惑。我的问题是:为什么要这样做?我可以想象提供一个Text属性对于实现ITextControl接口是必要的,但是为什么你会选择让它返回ValueListItem 而不是Text?

4

2 回答 2

0

我在使用 .NET Reflector 之前检查了这一点。如果 ListItem.Text 为 null,则返回 ListItem.Value;如果为空,则返回一个空字符串。ListItem.Value 反之亦然。所以不是 ListControl 这样做,它是选定的项目本身。

HTH。

于 2011-03-08T12:48:11.097 回答
0

如果用于处理 ASPX 页面的代码定义了使用该ITextControl接口的所有控件,则该Text属性是唯一可用的属性。在处理 aListControl时,我编写的大部分业务逻辑都关心所选项目的值,而不是文本。因此,在我看来,当前的行为是期望的行为,即使它不一定是预期的行为。

于 2013-10-16T19:19:38.273 回答