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))
如何设置我的列表框的源,以便它将显示通过控制器方法中的ViewBag.lstMembers传入的项目
答
您需要指定将用于呈现对象的字符串表示形式的显示成员和值成员,否则MVC将仅调用ToString
。
SelectList
有此例如为:一个重载的构造
new SelectList(items, "ValuePropertyName", "DisplayPropertyName")
在这里看到:
答
您可以使用MultiSelectList像 一些东西在行动
ViewBag.lstMembers = new MultiSelectList(db.ClubMembers.ToList(), "ValueProperty", "NameProperty");
在查看
@Html.ListBox("lstMembers", ViewBag.lstMembers as MultiSelectList)
你需要指定将用来渲染的字符串表示的显示部件和价值成员该对象,否则MVC将只调用'ToString'。 'SelectList'有一个重载的构造函数,用于这个 – Charleh
[我的ASP.NET MVC SelectList有什么问题?](http://stackoverflow.com/questions/2082069/what-is-wrong-with-my-asp -net-MVC-选择列表的) – Charleh