MVC的SelectList传递价值
问题描述:
我试图手动创建一个列表,然后发送到视图:MVC的SelectList传递价值
我有以下
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)
我期待看到约翰·摩尔和吉姆·贝克在列表中,而是列表有以下2行:Digit1.Controllers.ListEntry
任何想法如何我可以清单列表显示名称。同样当我提交时,我还需要表中更新的名称为 (例如:John Moore或Jim Baker)
答
您对SelectList
使用了错误的超载。您需要使用,告诉它这显示过载/值使用:
new SelectList(myList, "Value", "Name");
价值和名称在这种情况下是要使用的值,并显示域的对象的属性的名称您的选择列表。
您所使用的过载是这样的:
SelectList(IEnumerable<T> items, object selectedValue)
基本上你是说你的SelectList有“名称”作为选择的(默认)值。