如果未设置,ListItem.Value将覆盖Text

如果在设置Text值之前将ListItem.Value设置为某个值,则TextValue都将设置为相同的值。 我可以解决这个问题,但我只想知道为什么会这样? 是因为某些“必须”被设置到屏幕上吗? 以及为什么在默认值为空字符串时覆盖。

.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。