如何使用@ Html.DropDownListFor在asp.net MVC 3中为SelectList描述组合两个dataTextFields

use*_*675 11 asp.net-mvc selectlist html.dropdownlistfor razor asp.net-mvc-3

我正在返回一些存储的联系人来查看DropDownList,我无法在我的SelectList中包含多个dataTextFields.

目前我有:

@Html.DropDownListFor(model => model.Account.AccountContacts, 
         new SelectList(ViewBag.DDContacts, "Contact.ContactID", "Contact.FirstName"),   
         new { @class = "select", style = "width: 100px;" })
Run Code Online (Sandbox Code Playgroud)

我想拥有:

@Html.DropDownListFor(model => model.Account.AccountContacts, 
        new SelectList(ViewBag.DDContacts, "Contact.ContactID", "Contact.FullName"),         
        new { @class = "select", style = "width: 100px;" })
Run Code Online (Sandbox Code Playgroud)

它结合了FirstName和LastName属性.

更新:我知道扩展联系人属性,我很好奇是否有一种简化的方法来在视图或控制器中完成此操作.我在这里尝试了两种解决方案无济于事.如何在SelectList文本描述中组合两个字段?

Ant*_*yrd 24

扩展联系

public partial class Contact
{
   private string _nameFull;
   public string NameFull
   { 
      get{return FirstName + " " + LastName;}
   }
}
Run Code Online (Sandbox Code Playgroud)


mam*_*owv 10

我意识到这个问题有一个经过批准的答案,但我不相信这是提问者想要的.我遇到了这个问题,这就是我解决它的方法:

@Html.DropDownListFor(model => model.Account.AccountContacts, 
     new SelectList((from c in ViewBag.DDContacts.ToList() select new {
         ID_Value = c.Contact.ContactID,
         FullName = c.Contact.FirstName + " " + c.Contact.LastName
     }), "ID_Value", "FullName"),   
     new { @class = "select", style = "width: 100px;" })
Run Code Online (Sandbox Code Playgroud)

如何工作的:我们使用linq从列表中选择特定数据并将其放入我们的新对象中.这个新对象只包含两个属性,'ID_Value'和'FullName'.现在我们的DropDownListFor可以使用这个新对象来实现我们想要的输出.