Can these two properties of a dropdown list in ASP.NET be used independently?
I wanted to retrieve a null
value when the user selects some text; I couldn't as it retrieves the Text
property whenever the Value
is null
. Eg:
l1 = new ListItem("Cat", null);
Console.WriteLine(l1.Value);
The output is
Cat
In another situation, when both the properties have different strings, I get the string in the Value
property when I use the Text
property. Eg:
l2 = new ListItem("Cat", "Mouse");
DropDownList ddl = new DropDownList();
ddl.Items.Add(li);
ddl.SelectedIndex = 0;
Console.WriteLine(ddl.SelectedValue);
Console.WriteLine(ddl.Text);
The output is
Mouse
Mouse
Just set the value to some sentinel value like an empty string or some crazy string "JANDKJASD_" and handle it accordingly.
Your observation is correct. Contrary to what intuition tells us,
ListControl.Text
(and, thus,DropDownList.Text
) does not return theText
property of the currently selectedListItem
. Here's an excerpt from the documentation:To get the
Text
property of the selectedListItem
, useSelectedItem
to retrieve the currently selected list item and then access theText
property.So, the behavior you are seeing is by design. Why did the .NET developers specify
ListControl.Text
in such an unintuitive way? I have no idea. Maybe it was necessary to support theITextControl
interface...