C# 为什么这会呈现为一个“列表”;System.Web.Mvc.SelectListItem“;s

C# 为什么这会呈现为一个“列表”;System.Web.Mvc.SelectListItem“;s,c#,asp.net-mvc,linq-to-sql,C#,Asp.net Mvc,Linq To Sql,我试图用从属性中提取的值填充DropDownList,现在我的最终结果是一个只有“System.Web.Mvc.SelectListItem”的列表。我肯定这里有一些小步骤我忽略了,但就我的一生而言,我不知道这是什么 属性获取以生成列表: public IEnumerable<SelectListItem> AllFoo { get { var foo = from g in Bar orderby g.name

我试图用从属性中提取的值填充DropDownList,现在我的最终结果是一个只有“System.Web.Mvc.SelectListItem”的列表。我肯定这里有一些小步骤我忽略了,但就我的一生而言,我不知道这是什么

属性获取以生成列表:

public IEnumerable<SelectListItem> AllFoo {
    get {
        var foo = from g in Bar
                  orderby g.name
                  select new SelectListItem {
                     Value = g.fooid.ToString(),
                     Text = g.name
                  };

        return foo.AsEnumerable();
    }
}
查看代码:

<%= Html.DropDownListFor(model => model.fooid, ViewData["fooList"] as SelectList) %>
model.fooid,ViewData[“傻瓜”]作为SelectList)%>

编辑:这个问题与之前提出的问题非常相似:


否则,您可能会发现本文很有帮助:


它使用EditorFor,但DisplayFor也可以这样做。

这里的问题是,您不应该用
IEnumerable
填充
选择列表。使用
SelectList
IEnumerable
,但不能同时使用两者。有关更多详细信息,请查看此问题:

我遇到了相同的问题。您应该在视图中呈现列表,如下所示

@Html.DropDownListFor(model => model.fooid, new 
    SelectList(ViewData["fooList"],"Text","Value", Model.DefaultValue))

这是基于c#with razor view

这不是很有帮助。这个问题询问了为什么标签中除了“System.Web.Mvc.SelectListItem”之外什么都没有,而没有正确的文本和值。你的链接都没有提到这个问题。是的,其他的问题或文章都与这个问题“非常相似”。事实上一点也不。
@Html.DropDownListFor(model => model.fooid, new 
    SelectList(ViewData["fooList"],"Text","Value", Model.DefaultValue))