传递多个模型进行查看

时间:2017-08-13 13:24:05

标签: c# asp.net-mvc entity-framework

我正在开发一个asp mvc 5网站。我有3个模型,是约会,咨询和联系。现在我想在一个名为userdetails的视图中显示这3个模型的所有细节。到目前为止我做了什么 创建了一个视图模型

public class AllServices
{
    public List<Contact> Contacts { get; set; }
    public List<Appointment> Appointments { get; set; }
    public List<Consultation> Consultations { get; set; }
}

然后创建了控制器动作方法

public ActionResult userdetails()
{ 
    AllServices services = new AllServices();
    services.Appointments = dbcontext.Appointments.ToList();
    services.Consultations = dbcontext.Consultations.ToList();
    services.Contacts = dbcontext.Contacts.ToList();
    return View(services);
}

并且在视野中我做了

@model List<Astrology.ViewModels.AllServices>
....
@foreach(var item in Model)
{
    @item.Appointments
}

但是当我运行页面时,我发现了像这样的错误

  

传递到字典中的模型项的类型为&#39; Astrology.ViewModels.AllServices&#39;,但此字典需要类型为&#39; System.Collections.Generic.List`1 [Astrology]的模型项.ViewModels.AllServices]&#39;

有人可以帮助我。我坚持这个。

1 个答案:

答案 0 :(得分:0)

错误告诉您,当您需要List of AllServices模型时,您只传递单个AllServices模型。您需要更改视图以期望一个模型或将单个模型放入列表中。

编辑(添加代码示例) 将您的控制器更改为以下内容:

public ActionResult userdetails()
{ 
    List<AllServices> lservices = new List<AllServices>();
    AllServices services = new AllServices();
    services.Appointments = dbcontext.Appointments.ToList();
    services.Consultations = dbcontext.Consultations.ToList();
    services.Contacts = dbcontext.Contacts.ToList();
    lservices.Add(services);
    return View(lservices);
}