2015-04-01 33 views
1

我有一个选择列表在我的asp.net MVC 5.2网络应用程序与数据库的所有项目。 MVC 5.2允许使用<optgroup>。现在我想要使用Type(string)属性的optgroups。这个语法怎么样?除了.group部分以外,一切正常。我真的不知道如何做到这一点。SelectList在ASP.NET MVC 5.2中的OptGroup

的代码创建选择列表:

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 

错误是:类型的

值 'STRING' 不能被转换为 'System.Web.Mvc.SelectListGroup'。

回答

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 

我希望有人能够从这些代码中获益。