5

私はMVC 3を使用してIListを消費するプロジェクト(WCFですが、それは問題ではありません)を呼び出しています。しかしIList <string>をMVC.SelectListItemに変換するには、明示的なキャストが必要です

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

、今私が変換しようとしています:私はこのように行っていると、彼らが正常に動作一覧

ハードコードされたリストに、文字列の単一列のリスト(国のリストだけであるのIList)このコード:

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

リストからSelectListItemに暗黙的に変換する必要があります。誰でもこれを行いますか?はい。私は検索していくつかの例を見つけましたが、それは本当に私の特定の必要性に合っていませんでした。

+0

コレクション(IList)を単一の項目(SelectListItem)に変換することはできません。 – joedotnot

答えて

18

次のような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

これはうまくいっています(Linq)が、2番目の部分は動作しませんでした。しかし、私は "面白い"カミソリを持っています。モデル 'System.Collections.Generic.List 'を 'System.Web.Mvc.SelectListItem'に変換できません - @ Html.DropDownListFor(model => model.BirthPlace、Model.BirthPlace as SelectListItem) –

+1

剃刀の問題を修正しました。再度ありがとうLaurent! –

0

、ビューで

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

を、

@Html.DropDownList("LocationName", ViewData["Area"] as IEnumerable<SelectListItem>) 
関連する問題