0

在视图中显示项目列表时出现问题。无法将其从 ItemStore.Item 转换为 IEnumerable,我还在 list.vbhtml 中添加了“@Method List(Of ItemStore.Item)”,并且无法显示传入字典的项目,因为它的类型为“ Item Store.Item',但此字典需要类型为“System.Collections.Generic.List`1[Item Store.Item]”的模型项。

****目录控制器* ** * ** * ** *

    Function About() As ActionResult
        Return View()
    End Function

    Function Index() As String
        Return "Index"
    End Function

    Function List(search As String) As ActionResult
        Dim model As New SQLItemModel
        Dim items = model.SelectById(search)
        Return View(items)

    End Function

** * ** * List.vbhtml * ** * ** * ****

    The search text is @ViewBag.Message

    @For Each item In Model
        @item.ID

** * ** * *** SQLItemModel.vb * ** * ** * ** * *

Private connectionString As String = My.Settings.sqlconnection

Public Function SelectAll() As ICollection(Of Item)
    Dim items As New List(Of Item)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Dim cmd As New SqlCommand("select * from item", connection)
        Dim reader As SqlDataReader = cmd.ExecuteReader()
        While reader.Read()
            items.Add(GetItem(reader))
        End While
    End Using
    Return items
End Function

Public Function SelectById(ItemID As Integer) As Item
    Dim item As Item = Nothing
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Dim cmd As New SqlCommand()
        cmd.CommandText = "select * from Tbl_Items where ID = @ID"
        cmd.Connection = connection
        cmd.Parameters.Add(New SqlParameter("ID", ItemID))
        Dim reader As IDataReader = cmd.ExecuteReader()
        If reader.Read() Then
            Item = GetItem(reader)
        End If
    End Using
    Return Item
End Function

Private Function GetItem(reader As SqlDataReader) As Item

    Dim ID = reader("ID")
    Dim ProductCode = reader("ProductCode")
    Dim Brand = reader("Brand")
    Dim Description = reader("Description")
    Dim Colour = reader("Colour")
    Dim Finish = reader("Finish")
    Dim Type = reader("Type")
    Dim Size = reader("Size")
    Dim Unit = reader("Unit")

    Return New Item(ID, ProductCode, Brand, Description, Colour, Finish, Type, Size, Unit)
End Function
4

1 回答 1

1

SelectById只返回一个Item(同时SelectAll返回Items 的集合),但您的 List 视图需要一个集合。

一个简单的解决方法是将单个项目包装在一个数组中:

Function List(search As String) As ActionResult
    Dim model As New SQLItemModel
    Dim items = model.SelectById(search)
    Return View({items})
End Function
于 2013-04-10T08:40:23.687 回答