我的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;。
答案 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
我希望有人能从这段代码中获利。