从ListControl
派生的列表控件(如DropDownList
、ListBox
或RadioButtonList
)由ListItem
的列表填充。ListItem
具有Value
和Text
属性。
ListControl
提供了以下方法来访问当前选定的项:
ListControl.SelectedItem
返回当前选定的ListItem
,ListControl.SelectedValue
返回当前选定的ListItem
的Value
属性。有趣的是:
ListControl.Text
返回与ListControl.SelectedValue
完全相同的值。它不会像人们所预期的那样返回SelectedItem.Text
。我是精心设计
ListControl.Text Property 获取或设置SelectedValue控件的ListControl属性。 ..。 备注 Text属性获取和设置与SelectedValue属性相同的值。
这似乎违反了直觉和迷惑人。我的问题是:为什么要这样做?我可以想象,提供一个Text
属性对于实现ITextControl
接口是必要的,但是为什么要让它返回ListItem的Value
而不是Text
呢?
发布于 2013-10-16 19:19:38
如果用于处理ASPX页的代码使用ITextControl
接口定义所有控件,则Text
属性是唯一可用的属性。在处理ListControl
时,我编写的大部分业务逻辑都关心所选项的值,而不是文本。因此,在我看来,当前的行为就是期望的行为,即使它不一定是预期的行为。
发布于 2011-03-08 12:48:11
在使用.NET Reflector之前,我已经检查过了。如果ListItem.Text为null,则返回ListItem.Value;如果为null,则返回空字符串。它也适用于ListItem.Value,反之亦然。所以这不是ListControl做的,而是所选的项目本身。
HTH。
https://stackoverflow.com/questions/5232610
复制相似问题