0

ビューにアイテムのリストを表示する際に問題が発生しました。ItemStore.Item から IEnumerable に変換できません。' @Method List(Of ItemStore.Item) ' も list.vbhtml に追加しましたが、表示できません。 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(whileは s のSelectAllコレクションを返しますItem)、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 に答える