我正在尝试手动创建列表,然后将其发送到视图:
我有以下
var MyList = new[] {
new ListEntry {Name = "John Moore"},
new ListEntry {Name = "Jim Baker"}
};
ViewBag.MyList = new SelectList(MyList , "Name");
在视图中,我有以下内容:
@Html.DropDownListFor(model => model.name.UserName, (IEnumerable<SelectListItem>)ViewBag.MyList)
我期待在列表中看到John Moore和Jim Baker,但是列表中有两行,其中包含以下内容:Digit1.Controllers.ListEntry
关于如何在列表中显示名称的任何想法。当我提交时,我也需要这个名字 表中更新(例如:John Moore或Jim Baker)
答案 0 :(得分:1)
您对SelectList
使用了错误的重载。您需要使用重载来告诉它使用哪个显示/值:
new SelectList(myList, "Value", "Name");
在这种情况下,值和名称是对象上要用于选择列表的值和显示字段的属性的名称。
您正在使用的超载是:
SelectList(IEnumerable<T> items, object selectedValue)
基本上你说你的SelectList有“Name”作为选中(默认)值。