为什么这会呈现为"System.Web.Mvc.SelectListItem"的列表?

Joh*_*ina 15 c# asp.net-mvc linq-to-sql

我正在尝试使用从属性中提取的值来填充DropDownList,而我现在的最终结果是除了"System.Web.Mvc.SelectListItem"之外的任何内容.我敢肯定,我在这里省略了一些小步骤,但对于我的生活,我无法弄清楚它是什么.

属性GET生成列表:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器代码:

public ActionResult Edit(string id) {
    // n/a code
    ViewData["fooList"] = new SelectList(g.AllFoo, g.fooid);

    return View(g);
}
Run Code Online (Sandbox Code Playgroud)

视图代码:

<%= Html.DropDownListFor(model => model.fooid, ViewData["fooList"] as SelectList) %>
Run Code Online (Sandbox Code Playgroud)

Ste*_*ack 34

这里的问题是你不应该填写SelectList一个IEnumerable<SelectListItem>.使用其中一个SelectList或一个IEnumerable<SelectListItem>,但不是两个.有关更多详细信息,请查看此问题:Asp.Net MVC 2 Dropdown显示System.Web.MVC.SelectListItem


Joh*_*son -5

编辑:这个问题与已经问过的问题非常相似:

ASP.NET MVC 2 - Html.DropDownList 与 ViewModel 混淆


否则,您可能会发现这篇文章很有帮助:

http://www.nickriggs.com/posts/rendering-and-binding-drop-down-lists-using-asp-net-mvc-2-editorfor/

它使用 EditorFor,但对 DisplayFor 也可以做同样的事情。

  • 这不是很有帮助。这个问题询问为什么 &lt;option&gt; 标签只渲染“System.Web.Mvc.SelectListItem”而不是正确的文本和值的具体原因。您的两个链接都没有解决这个特定问题。 (4认同)
  • 是的,其他问题或文章都与这个问题或文章“非常相似”。事实上根本不是。 (2认同)