2016-07-22 52 views
0

我希望能够编辑我的选择菜单项的显示文本。我仍然希望选择菜单将来自Traveler的Id作为值和Name作为显示值。不过,我想连接的显示值与我的旅行模式不同的列称为目的地在选择列表中连接显示的选项的两个记录值

SelectList TravelersList = new SelectList(db.Travelers.Where(c => c.TravelerId == ThisId), "Id", "Name"); 

    foreach(var item as TravelersList) 
    { 
     //Concatenate the Traveler Name with the Destination 
    } 

    ViewBag.Travelers = TravelersList; 

回答

1

您需要SelectList使用.Select()和投影值来生成到SelectListItem

IEnumerable<SelectListItem> TravelersList = db.Travelers 
    .Where(c => c.TravelerId == ThisId).AsEnumerable().Select(x => new SelectListItem 
{ 
    Value = x.Id.ToString(), 
    Text = string.Format("{0} {1}", x.Name, x.Destination) 
}); 
ViewBag.Travelers = TravelersList; 

在视图中,它会然后是

@Html.DropDownListFor(m => m.someProperty, (IEnumerable<SelectListItem>)ViewBag.Travelers, ...) 

虽然我建议你使用视图模型与财产IEnumerable<SelectListItem> Travelers使视图是@Html.DropDownListFor(m => m.someProperty, Model.Travellers, ...)

+0

在.Select()之前添加.AsEnumerable()之后,这回答了我的问题。谢谢! –

相关问题