我得到了一个定义为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));
这似乎并不是最佳解决方案。我应该怎么做?
这似乎是一个非常好的通用解决方案来构建选择列表 – hunter 2011-05-10 12:59:49
它的工作原理,但必须有一个更直接的方式来做到这一点与MVC?如果不是,那么'Html.SelectListFor'的目的是什么? – jgauffin 2011-05-10 13:39:33
“不想在我的控制器中添加视图特定的逻辑” - 等等,这不是控制器的主要责任吗?为视图组装数据? – jfar 2011-05-10 15:03:36