使用扩展方法进行下拉列表

时间:2016-10-06 07:38:44

标签: c# drop-down-menu extension-methods

我目前正在开发一个具有创建和编辑视图的MVC应用程序。两个视图在UI方面非常相似。在每个页面上,我有大约5-7个下拉列表,我使用以下扩展方法填充在控制器中。

$.keys[0].n

现在,在编辑视图中,我想显示相同的下拉菜单,但这一次将所选值设置为true,无论用户在创建视图上选择了什么。这就是我目前正在做的事情

public static IEnumerable<SelectListItem> ToSelectListItems<T>(this IEnumerable<T> items, Func<T, string> textSelector, Func<T, string> valueSelector)
{
   return items.OrderBy(item => textSelector(item))
         .Select(item =>
         new SelectListItem
         {
           Text = textSelector(item),
           Value = valueSelector(item)
         });
}

这种方法有效,但我认为有更好的方法可以做到这一点,或者我坚持这个

1 个答案:

答案 0 :(得分:1)

我设法解决了一些问题。我为Workbooks.OpenText Filename:=FileName:=strPath & "thisFile.txt", DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:=",", ThousandsSeparator:="." 方法创建了一个重载,如下所示:

ToSelectListItems

现在我能做到:

public static IEnumerable<SelectListItem> ToSelectListItems<T>(this List<T> items, Func<T, string> nameSelector, Func<T, string> valueSelector, Func<T, bool> selecter)
{
   return items
       .OrderBy(item => nameSelector(item))
       .Select(item =>
        new SelectListItem
        {
           Selected = selecter(item),
           Text = nameSelector(item),
           Value = valueSelector(item)
        });
}