ASP.NET:为什么ListControl.Text返回所选ListItem的*值*而不是* text *?

时间:2011-03-08 12:43:52

标签: asp.net listcontrol

源自ListControl的列表控件(例如DropDownListListBoxRadioButtonList)由ListItem列表填充。 ListItem具有ValueText属性。

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

  • ListControl.SelectedItem返回当前选中的ListItem
  • ListControl.SelectedValue会返回当前所选Value的{​​{1}}属性。

现在,有趣的是:

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

这是by design

  

ListControl.Text属性

     

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

     

[...]

     

说明

     

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

这似乎违反直觉confuses people。我的问题是:为什么这样做?我可以想象,提供SelectedItem.Text属性对于实现Text接口是必要的,但是为什么你会选择让它返回ListItem的ITextControl而不是{{1} }}?

2 个答案:

答案 0 :(得分:0)

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

HTH。

答案 1 :(得分:0)

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