Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does this render as a list of "System.Web.Mvc.SelectListItem"s?

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) %>
like image 289
John Tacopina Avatar asked Jun 09 '10 18:06

John Tacopina


People also ask

What is SelectListItem MVC?

SelectListItem is a class which represents the selected item in an instance of the System. Web. Mvc.


2 Answers

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

like image 135
Stefan Paul Noack Avatar answered Oct 16 '22 21:10

Stefan Paul Noack


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

like image 36
Siva Kandaraj Avatar answered Oct 16 '22 22:10

Siva Kandaraj