2012-03-06 56 views
0

在.cshtml剃刀视图DropDownListFor,如何生成与多列

这工作:

@Html.DropDownListFor(
    m => m.PersonId, //bound value 
    new SelectList(Model.Persons, "PersonId", "FirstName" , 0), //list 
    " -- Select A Person -- " //default 
) 

然而,Model.Persons,除含有Model.Persons.PersonIdModel.Persons.FirstName,还含有Model.Persons.LastName

我怎样才能让姓氏在选择列表中显示为另一列?

回答

3

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

+0

这是一个简单的例子,但你说我应该在我的viewmodel中为每个行显示在下拉列表中包含一个字符串?到目前为止,我所看到的也是其他人所建议的(即DisplayText =“{0} | {1} | ... etc”,field1,field2) – 2012-03-06 21:35:38

+0

ya - 视图模型应包含需要的所有内容被显示。我个人使用ViewModel(不是'域模型'或'实体'),其中包含所有要显示为其超集或实体子集的所有内容。我还包括像上面这样的属性,另外IEnumerable 在模型中,所以一切都准备好了。 – 2012-03-07 17:08:50

+0

这就是我最终做的。我做了一个名为genericitems的类,它具有'int id'和'string display'。在我的viewmodels中,我只包含一个List SomeName'类型的交易。我还在视图模型中包含了一个起始索引值和一个顶部标签。 – 2012-03-07 21:22:23