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
这似乎违反了直觉,而且是错误的。我的问题是:为什么要这样做?我可以想象,提供
Text
属性对于实现ITextControl
接口是必要的,但您究竟为什么选择让它返回列表项的值而不是文本
。如果ListItem.Text为空,则返回ListItem.Value;如果为空,则返回空字符串。反之亦然,ListItem.Value也是如此。所以这不是ListControl做的,而是选定项本身
HTH.如果用于处理ASPX页面的代码使用ITextControl
界面定义了所有控件,则Text
属性是唯一可用的属性。在处理ListControl
时,我编写的大多数业务逻辑都关注所选项目的值,而不是文本。因此,在我看来,当前行为是期望的行为,即使它不一定是期望的行为