Почему этот рендеринг является списком "System.Web.Mvc.SelectListItem"?

Я пытаюсь заполнить 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) %>

Ответы

Ответ 2

Проблема заключается в том, что вы не заполняете SelectList с помощью IEnumerable<SelectListItem>. Используйте либо SelectList, либо IEnumerable<SelectListItem>, но не оба. Для получения дополнительной информации рассмотрите этот вопрос: Asp.Net MVC 2 Раскрывающееся отображение System.Web.MVC.SelectListItem

Ответ 3

Я столкнулся с той же проблемой. Вы должны отобразить в представлении, например

@Html.DropDownListFor(model = > model.fooid, новый SelectList (ViewData [ "fooList" ], "Текст", "Значение", Model.DefaultValue))

Это основано на С# с видом бритвы