【问题标题】:ASP.NET: Why does ListControl.Text return the *value* of the selected ListItem rather than the *text*?ASP.NET:为什么 ListControl.Text 返回所选 ListItem 的 *value* 而不是 *text*?
【发布时间】:2013-10-17 03:19:38
【问题描述】:

ListControl 派生的列表控件,例如DropDownListListBoxRadioButtonList,由ListItems 的列表填充。 ListItem 具有 ValueText 属性。

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

  • ListControl.SelectedItem 返回当前选中的ListItem
  • ListControl.SelectedValue 返回当前选中的ListItemValue 属性。

现在,有趣的是:

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

这是by design

ListControl.Text 属性

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

[...]

备注

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

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

【问题讨论】:

    标签: asp.net listcontrol


    【解决方案1】:

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

    HTH。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-09
        • 2013-11-10
        • 2020-05-18
        • 2015-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多