6

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

.Net 3.5

ListItem li = new ListItem();
li.Value = "abc"; //Text is now = "abc"
li.Text = "def";
li.Value = "qwe"; //Text remains "def"
4

1 回答 1

7

这是因为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。

于 2013-03-13T21:05:17.283 回答