【问题标题】:MVC pass two objects to viewMVC 传递两个对象来查看
【发布时间】:2015-12-08 09:50:55
【问题描述】:

我只是在努力将两个对象传递给我的视图,然后从中显示数据。故意将两个不同的对象发送到一个视图,我为它创建了单独的类,其中包含我的两个类对象,如下所示:

Public Class CustomModelProjetsTransports
    Public Projects As IEnumerable(Of woitgroup_transport.tbProjekt)
    Public Transports As IEnumerable(Of woitgroup_transport.tbTransport)
End Class

现在在我的控制下,我将它传递给一个视图(我检查了,数据在那里:

Function Index() As ActionResult
        If Not IsNothing(Session("LogedUserId")) Then

            Dim userId As Integer = Session("LogedUserId")
            Dim projectsAndTransportsLists As New CustomModelProjetsTransports

            Dim ProjectsPerUser As New List(Of tbProjekt)
            ProjectsPerUser = db.Database.SqlQuery(Of tbProjekt)("SELECT * FROM [mydb].[dbo].[tbProjekt] where Id IN (SELECT DISTINCT ProjectId FROM [mydb].[dbo].[tbUserProject] WHERE UserId = " & Session("LogedUserId") & ")").ToList

            Dim transportsPerUser As New List(Of tbTransport)
            transportsPerUser = db.Database.SqlQuery(Of tbTransport)("SELECT * FROM [mydb].[dbo].[tbTransport] where ProjectId IN  (SELECT DISTINCT ProjectId FROM [mydb].[dbo].[tbUserProject] WHERE UserId = " & Session("LogedUserId") & ")").ToList

            projectsAndTransportsLists.Projects = ProjectsPerUser
            projectsAndTransportsLists.Transports = transportsPerUser

            Return View(projectsAndTransportsLists)

        Else
            Return RedirectToAction("Index", "Login")
        End If
    End Function

问题出在视图中:

这是最上面的:

@ModelType IEnumerable(Of woitgroup_transport.CustomModelProjetsTransports)

  <tbody>
                                                @For Each item In Model(1).Transports.ToList
                                                    Dim currentItem = item
                                                    @<tr>
...

当我执行我的应用程序时,它会在此处正确填写:

   Return View(projectsAndTransportsLists)

但是当视图想要如下显示时,我收到一个错误:

The model item passed into the dictionary is of type 'woitgroup_transport.CustomModelProjetsTransports', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[woitgroup_transport.CustomModelProjetsTransports]'.

其他问题:

请记住,我的视图中有项目列表,如何正确填写下拉列表(最好使用引导样式)。我正在尝试这样,但仍然有问题......

@Html.DropDownListFor(Function(m) m.Projects.., DirectCast(Model.Projects, SelectList), New With { _
                        .class = "form-control" _
                        })

它还说Function(m) m.Projects.Name

that Name is not exist - 我在智能感知上只看到通用列表,例如 Function(m) m.Projects.ToList ...

【问题讨论】:

  • 将视图更改为@ModelType woitgroup_transport.CustomModelProjetsTransports
  • 谢谢,是的-一段时间后我也重新发布了它-您能看看我在主题中添加了其他问题吗?
  • 一次只有一个问题 - 你需要问一个新问题

标签: vb.net asp.net-mvc-4 model-view-controller razor


【解决方案1】:

错误消息非常清楚地说明了问题。您正在将 CustomModelProjetsTransports 传递给视图。但是视图需要IEnumerable(Of CustomModelProjetsTransports)。删除IEnumerable 应该没问题。

【讨论】:

  • 谢谢,这是对的,我在一段时间后重新认识了自己 - 我在主题中添加了其他问题,你介意看看它并帮助我解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2023-04-06
  • 2012-02-18
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多