在asp.net MVC 5.2中使用OptGroup选择List

时间:2015-04-01 20:35:39

标签: asp.net-mvc vb.net

我的asp.net MVC 5.2 Web应用程序中有一个SelectList,包含数据库的所有项目。 MVC 5.2允许使用<optgroup>。现在我想拥有属性Type(string)的optgroups。这个的语法怎么样?除.group部分外,一切正常。我真的不知道如何做到这一点。

创建SelectList的代码:

Public Shared Function getNameList() As IEnumerable(Of SelectListItem)
   Dim DB As New ModelDB
   Return DB.Things.ToList().[Select](Function(item) New SelectListItem() With {
                                                     .Text = item.Name,
                                                     .Value = item.ID,
                                                     .Group = item.Type})  'ERROR in this line
End Function

错误是:

  

类型&#39;字符串&#39;的值无法转换为&#39; System.Web.Mvc.SelectListGroup&#39;。

1 个答案:

答案 0 :(得分:2)

猜猜我在经过几个小时的尝试后找到了解决方案:

Public Shared Function getNameList() As IEnumerable(Of SelectListItem)
    Dim DB As New ModelDB
    'sort alphabetically
    Dim sortList As IEnumerable(Of Model) = From item In DB.Model.ToList() Order By item.Name Order By item.Type
    'create list of SelectListGroup
    Dim OptGroups As List(Of SelectListGroup) = sortList.Select(Function(item) item.Type).Distinct().Select(Function(type) New SelectListGroup With {.Name = type}).ToList()
    'define selectList
    Dim selectList As IEnumerable(Of SelectListItem) = sortList.[Select](Function(item) New SelectListItem() With {
                                           .Text = item.Name,
                                           .Value = item.ID,
                                           .Group = OptGroups.First(Function(type) type.Name = item.Type)})

    Return selectList
End Function

我希望有人能从这段代码中获利。