5

Tôi đang gọi một dự án (WCF, nhưng điều đó không quan trọng) mà tiêu thụ một IList, với MVC 3 (mà thực sự không nên quan trọng hoặc rõ ràng) Tôi muốn chuyển đổi một cột Danh sách duy nhất của chuỗi (IList mà chỉ là một danh sách các quốc gia) vào một danh sáchChuyển đổi IList <string> thành MVC.SelectListItem cần rõ ràng đúc

danh sách

cứng Coded tôi đã làm như thế này và họ làm việc tốt:

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

Tuy nhiên, bây giờ tôi đang cố gắng để chuyển đổi mã này:

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

Tôi cần chuyển đổi hoàn toàn từ Danh sách thành SelectListItem, bất kỳ ai thực hiện việc này? Có .. Tôi đã tìm kiếm và tìm thấy một số ví dụ, nhưng không có gì thực sự phù hợp với nhu cầu cụ thể của tôi.

+0

Bạn không thể chuyển đổi tập hợp (IList) thành một mục duy nhất (SelectListItem). – joedotnot

Trả lời

18

Bạn có thể sử dụng LINQ như vậy:

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

Hoặc Tôi nghĩ rằng bạn chỉ có thể sử dụng một trong những nhà xây dựng SelectList của:

public SelectList BirthPlace { get; set; } 

BirthPlace = new SelectList(repo.GetCountries()); 
+0

Cool, đã hoạt động (LINQ) nhưng không phải phần thứ hai. Tôi tuy nhiên có "vui vẻ" với dao cạo. Không thể chuyển đổi loại 'System.Collections.Generic.List ' thành 'System.Web.Mvc.SelectListItem' - @ Html.DropDownListFor (model => model.BirthPlace, Model.BirthPlace dưới dạng SelectListItem) –

+1

Đã khắc phục sự cố dao cạo. Cảm ơn một lần nữa Laurent! –

0

Trong 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(); 

Trong View,

@Html.DropDownList("LocationName", ViewData["Area"] as IEnumerable<SelectListItem>) 
Các vấn đề liên quan