2016-07-22 53 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()之後,這回答了我的問題。謝謝! –

相關問題