如果未设置,ListItem.Value将覆盖Text
如果在设置Text
值之前将ListItem.Value
设置为某个值,则Text
和Value
都将设置为相同的值。 我可以解决这个问题,但我只想知道为什么会这样? 是因为某些“必须”被设置到屏幕上吗? 以及为什么在默认值为空字符串时覆盖。
.Net 3.5
ListItem li = new ListItem(); li.Value = "abc"; //Text is now = "abc" li.Text = "def"; li.Value = "qwe"; //Text remains "def"
这是因为Text
属性的getter以这种方式实现:
get { if (this.text != null) { return this.text; } if (this.value != null) { return this.value; } return string.Empty; }
MSDN:
使用Text属性指定或确定ListItem表示的项目的列表控件中显示的文本。 注意如果Text属性包含null,则get访问器将返回Value属性的值 。 如果Value属性反过来包含null,则返回String.Empty。
Value
属性是另一种方式:
如果Value属性包含null,则get访问器将返回Text属性的值。 如果Text属性反过来包含null,则返回String.Empty。