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有“名称”作为选择的(默认)值。