MVC 5 Razor — список, в котором отображаются элементы, переданные в список Viewbag.

Я передаю список ViewBag в свое представление, и я пытаюсь отобразить этот список в списке, чтобы я мог выбирать элементы этого списка.

Это метод контроллера для представления:

 public ActionResult AddMembers(int? id)
        {
            ViewBag.lstMembers = db.ClubMembers.ToList();

            var selClub = db.Clubs.Find(id);
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            return View(selClub);

        }

Это то, что у меня есть в настоящее время, но оно неправильно отображает элементы, как показано на фотографии ниже:

@Html.ListBoxFor(m => m.ClubMembers, new SelectList ( ViewBag.lstMembers))

введите здесь описание изображения

Как я могу установить источник моего списка, чтобы он отображал элементы, переданные через ViewBag.lstMembers из метода контроллера


person Cathal O 'Donnell    schedule 12.02.2016    source источник
comment
Вам нужно указать элемент отображения и элемент значения, которые будут использоваться для отображения строкового представления объекта, иначе MVC просто вызовет ToString. SelectList имеет для этого перегруженный конструктор   -  person Charleh    schedule 12.02.2016
comment
Возможный дубликат Что не так с моим ASP.NET MVC SelectList?   -  person Charleh    schedule 12.02.2016


Ответы (2)


Вам нужно указать элемент отображения и элемент значения, которые будут использоваться для отображения строкового представления объекта, иначе MVC просто вызовет ToString.

SelectList имеет для этого перегруженный конструктор, например:

new SelectList(items, "ValuePropertyName", "DisplayPropertyName")

глянь сюда:

https://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist.selectlist(v=vs.118).aspx#M:System.Web.Mvc.SelectList .

person Charleh    schedule 12.02.2016

вы можете использовать MultiSelectList что-то подобное в действии

ViewBag.lstMembers = new MultiSelectList(db.ClubMembers.ToList(), "ValueProperty", "NameProperty");

с учетом

@Html.ListBox("lstMembers", ViewBag.lstMembers as MultiSelectList)
person Imran Luhur    schedule 13.02.2016