我正在尝试使用从属性中提取的值来填充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();
}
}
控制器代码:
public ActionResult Edit(string id) {
// n/a code
ViewData["fooList"] = new SelectList(g.AllFoo, g.fooid);
return View(g);
}
观看代码:
<%= Html.DropDownListFor(model => model.fooid, ViewData["fooList"] as SelectList) %>
答案 0 :(得分:33)
这里的问题是你不应该用SelectList
填充IEnumerable<SelectListItem>
。使用SelectList
或IEnumerable<SelectListItem>
,但不能同时使用两者。有关详细信息,请查看此问题:Asp.Net MVC 2 Dropdown Displaying System.Web.MVC.SelectListItem
答案 1 :(得分:2)
我遇到了同样的问题。您应该在视图中呈现您的列表,如
@Html.DropDownListFor(model => model.fooid, new
SelectList(ViewData["fooList"],"Text","Value", Model.DefaultValue))
这是基于带有剃刀视图的c#
答案 2 :(得分:-5)
编辑:这个问题与已经提出的问题非常类似:
ASP.NET MVC 2 - Html.DropDownListFor confusion with ViewModel
否则,您可能会发现本文有用:
http://www.nickriggs.com/posts/rendering-and-binding-drop-down-lists-using-asp-net-mvc-2-editorfor/
它使用EditorFor,但DisplayFor也可以这样做。