ASP.NET: Why does ListControl.Text return the *value* of the selected ListItem rather than the *text*?

我怕爱的太早我们不能终老 提交于 2019-12-06 12:35:51

问题


List controls deriving from ListControl, such as DropDownList, ListBox or RadioButtonList, are populated by a list of ListItems. A ListItem has a Value and a Text property.

ListControl offers the following methods to access the currently selected item:

  • ListControl.SelectedItem returns the currently selected ListItem,
  • ListControl.SelectedValue returns the Value property of the currently selected ListItem.

Now, the interesting thing is:

  • ListControl.Text returns exactly the same value as ListControl.SelectedValue. It does not return SelectedItem.Text, as one might expect.

This is by design:

ListControl.Text Property

Gets or sets the SelectedValue property of the ListControl control.

[...]

Remarks

The Text property gets and sets the same value that the SelectedValue property does.

This seems counter-intuitive and confuses people. My question is: Why was it done this way? I can imagine that providing a Text property is necessary for implementing the ITextControl interface, but why on earth would you choose to have it return the Value of the ListItem rather than the Text?


回答1:


I checked that out before using .NET Reflector. If ListItem.Text is null, it returns ListItem.Value instead; if that is null, it returns an empty string. It works in vice versa for ListItem.Value too. So it's not the ListControl doing this, it's selected item itself.

HTH.




回答2:


If the code used to process an ASPX page defines all controls using the ITextControl interface, the Text property is the only property available. When processing a ListControl, most of the business logic I write cares about the value of the selected item, not the text. Thus, in my opinion, the current behavior is the desired behavior, even if it is not necessarily the expected behavior.



来源:https://stackoverflow.com/questions/5232610/asp-net-why-does-listcontrol-text-return-the-value-of-the-selected-listitem-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!