Почему этот рендеринг является списком "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) %>
Ответы
Ответ 1
EDIT: этот вопрос очень похож на тот, который уже был задан:
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.
Ответ 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))
Это основано на С# с видом бритвы