我得到了一个模型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));
这似乎不是最佳解决方案。我应该怎么做?