Преобразование IList <string>в MVC. Выборка-лист требует явного приведения - PullRequest
5 голосов
/ 12 сентября 2011

Я звоню в проект (WCF, но это не должно иметь значения), который использует IList, с MVC 3 (который на самом деле не должен иметь значения, очевидно). Я хочу преобразовать один столбец. Список строк (IList, который просто список стран) в список

Жестко закодированный список я сделал так, и они отлично работают:

 public List<SelectListItem> mothermarriedatdelivery = new List<SelectListItem>();
 mothermarriedatdelivery.Add(new SelectListItem() { Text = "Yes", Value = "1" });

Однако сейчас я пытаюсь преобразовать этот код:

 public List<SelectListItem> BirthPlace { get; set; }
 BirthPlace = new List<SelectListItem>();
 GetHomeRepository repo = new GetHomeRepository();
 BirthPlace = repo.GetCountries();

Мне нужно неявно конвертировать из List в SelectListItem, кто-нибудь делает это? Да. Я провел поиск и нашел несколько примеров, но ни один из них не соответствует моим конкретным потребностям.

Ответы [ 2 ]

18 голосов
/ 12 сентября 2011

Вы можете использовать LINQ следующим образом:

BirthPlace = repo.GetCountries()
                 .Select(x => new SelectListItem { Text = x, Value = x })
                 .ToList();

Или я думаю, что вы можете просто использовать один из конструкторов SelectList:

public SelectList BirthPlace { get; set; }

BirthPlace = new SelectList(repo.GetCountries());
0 голосов
/ 15 апреля 2014

In Controller,

   var result = proxy.GetAllLocations();

   ViewBag.Area = result.Where(p => p.ParentId == null).Select(p => new SelectListItem { Text = p.LocationName, Value = p.LocationId.ToString() }).ToList();

   ViewBag.Locations = result.Where(p => p.ParentId != null).Select(p => new SelectListItem { Text = p.LocationName, Value = p.LocationId.ToString() }).ToList();

   return View();

In View,

@Html.DropDownList("LocationName", ViewData["Area"] as IEnumerable<SelectListItem>) 
...