2011-09-08 60 views
0

我有一个viewModel类'SomeDataViewMode',该类有'List Schools'对象,充满了'学校'对象。学校obejct具有属性SchoolID和名称。 在我看来(剃刀)我说:@ Html.DropDownListFor类收集问题

@Html.DropDownListFor(c => c.ScoolId, new SelectList(Model.Schools), "Select some school") 

但所有我得到的是下拉列表中有:

MyProject.Domain.Entities.School 

如何获得价值?

回答

1

你应该无论是ToString()方法添加到School类,或者使用LINQ与Text S和Value S创建SelectListItem S:

new SelectList(Model.Schools.Select(s => new SelectListItem { Text = s.Name, Value = s.SchoolId })) 

编辑:您的代码是不必要的复杂性。
你可以写

@Html.DropDownListFor(x => x.Schools, new SelectList(list, "SchoolId", "Name")) 
+0

我试图与“@ Html.DropDownListFor(新的SelectList(Model.Schools.Select(S =>新SelectListItem {文本= s.Name,值= s.SchoolId})))”。但它需要第二个参数。 – 1110

+0

你会得到什么错误信息? – SLaks

+0

方法'DropDownListFor'没有重载需要1个参数。但感谢你的想法,我得到了这个代码工作。 @ { List list = Model.Schools; var schools = new SelectList(list,“SchoolId”,“Name”); } @ Html.DropDownListFor(x => x.Schools,@items) – 1110

0

您需要指定应该使用哪个学校对象的属性值和文本。例如,如果School模型具有NameId属性:

@Html.DropDownListFor(
    c => c.ScoolId, 
    new SelectList(Model.Schools, "Id", "Name"), 
    "Select some school" 
)