从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
复制相似问题