I'm trying to populate a DropDownList with values pulled from a property, and my end result right now is a list of nothing but "System.Web.Mvc.SelectListItem"s. I'm sure there's some minor step I'm omitting here, but for the life of me I can't figure out what it is.
The property GET generating the list:
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();
}
}
The controller code:
public ActionResult Edit(string id) {
// n/a code
ViewData["fooList"] = new SelectList(g.AllFoo, g.fooid);
return View(g);
}
The view code:
<%= Html.DropDownListFor(model => model.fooid, ViewData["fooList"] as SelectList) %>
SelectListItem is a class which represents the selected item in an instance of the System. Web. Mvc.
The problem here is that you shoudn't fill a SelectList
with an IEnumerable<SelectListItem>
. Use either SelectList
or an IEnumerable<SelectListItem>
, but not both. For more details, have a look at this question: Asp.Net MVC 2 Dropdown Displaying System.Web.MVC.SelectListItem
I ran into the same problem. You should render your List in the view like
@Html.DropDownListFor(model => model.fooid, new
SelectList(ViewData["fooList"],"Text","Value", Model.DefaultValue))
This is based on c# with razor view
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With