Asp.net mvc 3 如何生成具有多个列的DropDownListFor

Asp.net mvc 3 如何生成具有多个列的DropDownListFor,asp.net-mvc-3,razor,html.dropdownlistfor,Asp.net Mvc 3,Razor,Html.dropdownlistfor,在.cshtml视图中 这项工作: @Html.DropDownListFor( m => m.PersonId, //bound value new SelectList(Model.Persons, "PersonId", "FirstName" , 0), //list " -- Select A Person -- " //default ) 但是,Model.Persons,除了包含Model.Persons.PersonId和Model.Persons.First

在.cshtml视图中

这项工作:

@Html.DropDownListFor(
  m => m.PersonId, //bound value
  new SelectList(Model.Persons, "PersonId", "FirstName" , 0), //list
  " -- Select A Person -- " //default
)
但是,
Model.Persons
,除了包含
Model.Persons.PersonId
Model.Persons.FirstName
,还包含
Model.Persons.LastName


如何使姓氏也作为另一列显示在选择列表中?

添加一个属性“全名”,该属性是一个只返回这两个属性的就绪属性。然后,您可以使用它来代替“FirstName”

添加一个属性“Full Name”,该属性是一个只返回这两个属性的就绪属性。然后您可以使用它来代替“FirstName”

这是一个简单的示例,但您是说我应该在viewmodel中为dropdownlist中的每一行显示包含一个字符串?到目前为止,我所看到的与其他人所建议的不同(即DisplayText=“{0}{124;{1}}}{124;…等”,field1,field2)ya-视图模型应该包含需要显示的所有内容。就我个人而言,我使用的ViewModels(不是“域模型”或“实体”)包含所有要显示为其超集或实体子集的内容。我还包括了像上面这样的属性,另外在模型中有IEnumerable,所以一切都准备好了。这就是我最后所做的。我创建了一个名为genericitems的类,它具有
intid
字符串显示
。在我的viewmodels中,我只包含一个
列表SomeName
交易类型。我还为视图模型中的列表添加了一个起始索引值和一个顶部标签。这是一个简单的例子,但你是说我应该在视图模型中为dropdownlist中的每一行显示添加一个字符串?到目前为止,我所看到的与其他人所建议的不同(即DisplayText=“{0}{124;{1}}}{124;…等”,field1,field2)ya-视图模型应该包含需要显示的所有内容。就我个人而言,我使用的ViewModels(不是“域模型”或“实体”)包含所有要显示为其超集或实体子集的内容。我还包括了像上面这样的属性,另外在模型中有IEnumerable,所以一切都准备好了。这就是我最后所做的。我创建了一个名为genericitems的类,它具有
intid
字符串显示
。在我的viewmodels中,我只包含一个
列表SomeName
交易类型。我还包括视图模型中列表的起始索引值和顶部标签。