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

ASP.NET:为什么ListControl.Text返回所选ListItem的*value*,而不是*Text*?,asp.net,listcontrol,Asp.net,Listcontrol,从ListControl派生的列表控件,如DropDownList、ListBox或RadioButtonList,由ListItem列表填充。列表项有一个值和一个文本属性 ListControl提供以下方法来访问当前选定的项目: ListControl.SelectedItem返回当前选择的ListItem ListControl.SelectedValue返回当前所选ListItem的Value属性 现在,有趣的是: ListControl.Text返回与ListControl.Sel

ListControl
派生的列表控件,如
DropDownList
ListBox
RadioButtonList
,由
ListItem
列表填充。
列表项
有一个
和一个
文本
属性

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

  • ListControl.SelectedItem
    返回当前选择的
    ListItem
  • ListControl.SelectedValue
    返回当前所选
    ListItem
    Value
    属性
现在,有趣的是:

  • ListControl.Text
    返回与
    ListControl.SelectedValue
    完全相同的值。它不会像人们期望的那样返回
    SelectedItem.Text
这是:

ListControl.Text属性

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

[……]

备注

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


这似乎违反了直觉,而且是错误的。我的问题是:为什么要这样做?我可以想象,提供
Text
属性对于实现
ITextControl
接口是必要的,但您究竟为什么选择让它返回列表项的
值而不是
文本
。如果ListItem.Text为空,则返回ListItem.Value;如果为空,则返回空字符串。反之亦然,ListItem.Value也是如此。所以这不是ListControl做的,而是选定项本身


HTH.

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