2011-03-08 26 views
1

ListControl派生的列表控件,例如DropDownList,ListBoxRadioButtonList,由列表ListItems填充。 A ListItem有一個ValueText屬性。ASP.NET:爲什麼ListControl.Text返回所選ListItem的*值*而不是*文本*?

ListControl提供了以下方法來訪問當前所選的項目:

  • ListControl.SelectedItem返回當前選擇的ListItem
  • ListControl.SelectedValue返回當前選擇的ListItemValue財產。現在

,有趣的是:

  • ListControl.Text恰好返回相同的值ListControl.SelectedValue。它確實是而不是返回SelectedItem.Text,正如人們所期望的那樣。

這是by design

ListControl.Text物業

獲取或設置列表控件控制的SelectedValue屬性。

[...]

備註

Text屬性獲取和設置的SelectedValue屬性不相同的值。

這似乎違反直覺和confuses people。我的問題是:爲什麼這樣做?我可以想象,提供Text屬性對於實現ITextControl接口是必要的,但爲什麼您選擇返回ListItem的Value而不是Text

回答

0

我在使用.NET Reflector之前檢查了這一點。如果ListItem.Text爲null,則它會返回ListItem.Value;如果它爲null,則返回一個空字符串。它也適用於ListItem.Value。所以這不是ListControl這樣做,它是選中的項目本身。

HTH。

0

如果用於處理ASPX頁面的代碼使用接口ITextControl定義所有控件,則Text屬性是唯一可用的屬性。在處理ListControl時,我寫的大部分業務邏輯都關心所選項目的價值,而不是文本。因此,在我看來,當前的行爲就是期望的行爲,即使它不一定是預期的行爲。

相關問題