MVC 5 Razor - 显示在Viewbag列表中传递的项目的列表框

问题描述:

我将ViewBag列表传递给我的视图,我试图在列表框中显示此列表,以便我可以选择此列表中的项目。MVC 5 Razor - 显示在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)) 

enter image description here

如何设置我的列表框的源,以便它将显示通过控制器方法中的ViewBag.lstMembers传入的项目

+1

你需要指定将用来渲染的字符串表示的显示部件和价值成员该对象,否则MVC将只调用'ToString'。 'SelectList'有一个重载的构造函数,用于这个 – Charleh

+0

[我的ASP.NET MVC SelectList有什么问题?](http://*.com/questions/2082069/what-is-wrong-with-my-asp -net-MVC-选择列表的) – Charleh

您需要指定将用于呈现对象的字符串表示形式的显示成员和值成员,否则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

您可以使用MultiSelectList像 一些东西在行动

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

在查看

@Html.ListBox("lstMembers", ViewBag.lstMembers as MultiSelectList)