Asp.net 下拉列表的值和文本属性能否独立使用?

Asp.net 下拉列表的值和文本属性能否独立使用?,asp.net,drop-down-menu,Asp.net,Drop Down Menu,ASP.NET中下拉列表的这两个属性可以单独使用吗 我想在用户选择一些文本时检索null值;当值为null时,我无法检索文本属性。例如: l1 = new ListItem("Cat", null); Console.WriteLine(l1.Value); 输出是 猫 在另一种情况下,当两个属性都有不同的字符串时,当我使用文本属性时,我会在值属性中获取字符串。例如: l2 = new ListItem("Cat", "Mouse"); DropDownList ddl = new DropD

ASP.NET中下拉列表的这两个属性可以单独使用吗

我想在用户选择一些文本时检索
null
值;当
null
时,我无法检索
文本
属性。例如:

l1 = new ListItem("Cat", null);
Console.WriteLine(l1.Value);
输出是

在另一种情况下,当两个属性都有不同的字符串时,当我使用
文本
属性时,我会在
属性中获取字符串。例如:

l2 = new ListItem("Cat", "Mouse");
DropDownList ddl = new DropDownList();
ddl.Items.Add(li);
ddl.SelectedIndex = 0;
Console.WriteLine(ddl.SelectedValue);
Console.WriteLine(ddl.Text);
输出是

鼠标
老鼠


只需将该值设置为某个哨兵值,如空字符串或某个疯狂字符串“JANDKJASD”,并相应地进行处理。

您的观察是正确的。与直觉告诉我们的相反,
ListControl.Text
(因此,
DropDownList.Text
)不会返回当前选定的
ListItem的
Text
属性。以下是一段摘录:

ListControl.Text属性

获取或设置ListControl控件的SelectedValue属性

[……]

备注

Text属性获取和设置与SelectedValue属性相同的值

要获取所选列表项的
Text
属性,请使用
SelectedItem
检索当前所选列表项,然后访问
Text
属性


所以,你看到的行为是故意的。为什么.NET开发人员以如此不直观的方式指定
ListControl.Text
?我不知道。也许有必要支持
ITextControl
接口…

这听起来很奇怪。您能否就您遇到的问题发布一个小的工作示例?第1点为真-如果值为空,将使用文本,第2点听起来错误-如果填充了文本和值,并且您可以访问,则将使用文本Text@Heinzi现在清楚了吗@longhairedsi:是的,这很奇怪,但是当我访问文本和值时,我得到了Value属性……是的,现在很清楚了,谢谢。问题是您正在访问DropDownList的
Text
属性,而不是ListItem的
Text
属性。我添加了一个详细的解释作为答案。哨兵可以解决第一个问题。第二个呢?另外,再次使用空字符串会导致Value属性与Text属性相同。是的,现在我得到了它,我可以通过首先检索
SelectedItem
来访问
Text
属性。谢谢该死的,这是违反直觉的。我已经添加了一个关于这个设计决定的原因的问题:。也许其他人知道的更多。。。