Почему это отображается как список "System.Web.Mvc.SelectListItem"? - PullRequest
15 голосов
/ 09 июня 2010

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

Ответы [ 3 ]

33 голосов
/ 01 июня 2012

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

2 голосов
/ 07 августа 2012

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

@Html.DropDownListFor(model => model.fooid, new 
    SelectList(ViewData["fooList"],"Text","Value", Model.DefaultValue))

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

0 голосов
/ 09 июня 2010

РЕДАКТИРОВАТЬ: Этот вопрос очень похож на тот, который уже задавался:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...