我得到了一個定義爲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