IEnumerable 到SelectList,没有选择任何值
我在ASP.NET MVC应用程序中有类似的内容:
IEnumerable list = GetTheValues(); var selectList = new SelectList(list, "SelectedValue");
甚至认为选定的值已定义,它在视图中未被选中。 我有这种感觉,我在这里遗漏了一些东西,所以如果有人能把我的痛苦赶出去!
我知道我可以使用烦人的类型来提供密钥和值,但如果我不需要,我宁愿不添加额外的代码。
编辑:ASP.NET MVC RTM已修复此问题。
试试这个:
IDictionary list = GetTheValues(); var selectList = new SelectList(list, "Key", "Value", "SelectedValue");
SelectList(至少在预览版5中)不够聪明,看不到IEnumerable的元素是值类型,因此它应该将值用于值和文本。 相反,它将每个项目的值设置为“null”或类似的东西。 这就是所选值无效的原因。
如果您只是想将IEnumerable
映射到SelectList
您可以像这样内联:
new SelectList(MyIEnumerablesStrings.Select(x=>new KeyValuePair(x,x)), "Key", "Value");
看看这个: ASP.NET MVC SelectList selectedValue Gotcha
这对任何事情都有很好的解释。
试试这个
ViewBag.Items = list.Select(x => new SelectListItem() { Text = x.ToString() });