IEnumerable<MyViewModel>
選択リストを作成するために使用しようとした定義済みのモデルを取得しました ( Html.SelectListFor
)。しかし、私はそれを行う方法を理解できませんでした。それは私に単純なHtml.SelectList
方法を見させました。
がIEnumerable<SelectListITem>
必要で、コントローラーにビュー固有のロジックを追加したくない、またはビューにロジックを追加したくないので、次の拡張メソッドを作成することになりました。
public static class ExtensionMethods
{
public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> items, Func<T, string> valueSelector, Func<T, string> textSelector)
{
return items.Select(item => new SelectListItem
{
Text = textSelector(item),
Value = valueSelector(item)
}).ToList();
}
}
私は次のように使用します:
@Html.DropDownList("trainid", Model.ToSelectList(item => item.Id, item => item.Name));
これは最適な解決策ではないようです。どうすればよかったの?