代码之家  ›  专栏  ›  技术社区  ›  Chris Canal

IEnumerable<string>要选择列表,未选择任何值

  •  15
  • Chris Canal  · 技术社区  · 16 年前

    IEnumerable<string> list = GetTheValues();
    var selectList = new SelectList(list, "SelectedValue");
    

    即使选定的值已定义,也不会在视图上选定。我有一种感觉,我错过了一些东西,所以如果有人能把我的痛苦!

    我知道我可以使用一个恼人的mous类型来提供键和值,但是如果不需要的话,我宁愿不添加额外的代码。

    编辑:此问题已通过ASP.NET MVC RTM修复。

    4 回复  |  直到 15 年前
        1
  •  14
  •   Tim Scott    16 年前

    请尝试以下操作:

    IDictionary<string,string> list = GetTheValues();
    var selectList = new SelectList(list, "Key", "Value", "SelectedValue");
    

    SelectList(至少在Preview 5中)不够聪明,无法看到IEnumerable的元素是值类型的,因此它应该将该项用于值和文本。相反,它将每个项的值设置为“null”或类似的值。这就是为什么选定的值没有效果。

        2
  •  14
  •   Alex    12 年前

    IEnumerable<string> SelectList

    new SelectList(MyIEnumerablesStrings.Select(x=>new KeyValuePair<string,string>(x,x)), "Key", "Value");
    
        3
  •  4
  •   Pavel Chuchuva    13 年前
        4
  •  2
  •   Jay Sheth    8 年前

    试试这个

    ViewBag.Items = list.Select(x => new SelectListItem() 
                                  {
                                      Text = x.ToString()
                                  });