Как я могу объединить два поля объекта в списке объектов в один DropDown в MVC - PullRequest
0 голосов
/ 07 января 2019

На самом деле у меня есть действие, которое генерирует в нем viewbag. Я передаю список объектов в моем ViewBag. Теперь в представлении я хочу создать раскрывающийся список в моем объекте viewbag, в котором мне нужно два поля в виде раскрывающегося списка в mvc. например мой ServiceList.field1, ServiceList.field2. Я хочу, чтобы оба эти поля были объединены в выпадающем списке.

public ActionResult Add()
{
List<service> ServiceList = new List<service>();
ServiceList = GetService();
ViewBag.BackUPList = ServiceBackupList; 
return View();
}

и мой взгляд содержит

@Html.DropDownList("name", (SelectList)ViewBag.BackUPList, new { @class = 
"form-control" })

как объединить оба моих поля и показать в dropDown сгруппированные отдельно. например

ServiceList.field1
ServiceList.field1
ServiceList.field2
ServiceList.field2

1 Ответ

0 голосов
/ 07 января 2019

Вы можете создать новую коллекцию, в которой вы объединяете два свойства в одно, а затем создаете SelectList как:

ServiceList = GetService();

var dropDownList = ServiceList.Select(x=> new 
                                        { 
                                           Id = x.IdField, 
                                           Name = x.Field1.ToString() + x.Field2.ToString()
                                      }).ToList();
ViewBag.BackUPList = new SelectList(dropDownList,"Id","Name");

EDIT:

В соответствии с отредактированным вопросом вам нужно сгенерировать две коллекции и затем объединить:

var fieldList = ServiceList.Select(x=> x.IdField1)
                   .Concat(ServiceList.Select(x=> x.IdField2)).ToList();

, а затем создайте SelectList и вставьте ViewBag:

ViewBag.BackUPList = fieldList.Select(x => 
                                       new SelectListItem()
                                          { 
                                            Value = x, 
                                            Text = x 
                                      }).ToList();

и в представлении:

@Html.DropDownList("name", 
                   ViewBag.BackUPList as IEnumerable<SelectListItem>, 
                   new { @class = "form-control" })
...