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

时间:2013-03-13 21:00:51

标签: c# asp.net

如果您在设置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"

1 个答案:

答案 0 :(得分: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属性反过来包含null,   返回String.Empty。

Value属性是另一种方式:

  

如果Value属性包含null,则get访问器返回   Text属性的值。如果包含Text属性   null,返回String.Empty。