如果您已经选择了值,则可以遍历IEnumerable
尝试查找 selected SelectListItem
:
SelectListItem[] items = selectList.ToArray();
SelectListItem selectedItem = items.FirstOrDefault(i => i.Value == valueAsString)
?? items[0];
string selectedText = selectedItem.Text;
在我看来,转换SelectList
为不是找到选定值的最佳选择,InvalidCastException
当变量的真实类型selectList
不是SelectList
.
在大多数情况下,您的模型包含一个应在下拉列表中选择的值。您可以使用以下类获取此值ModelMetadata
:
//Get value from model or from ModelState
object modelValue = ModelMetadata
.FromLambdaExpression(expression, html.ViewData).Model;
SelectListItem[] items = selectList.ToArray();
string selectedValue = modelValue == null ? null : modelValue.ToString();
SelectListItem selectedItem = items.FirstOrDefault(i => i.Value == selectedValue)
?? items.FirstOrDefault();
string selectedText = selectedItem == null ? null : selectedItem.Text;
//Rest code goes here