MVC5 - 将多个列表放入视图中的正确方法(即客户联系人、客户位置)

MVC5 - Proper way to get multiple lists into a view (i.e. Customer Contacts, Customer Locations)

我正在使用 MVC5、EF6 DbFirst、AutoMapper。我有 3 个表:客户、CustomerContacts、CustomerLocations。我设置了我所有的关系并从数据库更新了我的模型。然后我为他们每个人创建了模型(Dto)类(即Model.Customer,Model.Customer联系人,Model.Customer位置)

在我的控制器中,我有一个名为 Details 的操作结果,在 Details.cshtml 中,我不仅需要显示基本客户信息,还需要显示所有客户联系人和客户位置的列表。

在我的 Model.Customer 中,我添加了以下属性:

public List<CustomerContact> Contacts { get; set; }
public List<CustomerLocation> Locations { get; set; }

我想弄清楚如何直接从我的客户对象利用这些属性,而不是必须将客户和 2 个单独的列表传递到我的视图。有人可以通过正确的工作流程帮助我在 MVC5 中做这样的事情吗?这是我唯一缺少的部分。

作为一个建议,我想说的是创建一个包含以下属性的模型:名称、联系人、位置等

然后在控制器中创建模型的列表类型对象。使用您的 Db 填充它并将其传递到您的视图中。

然后是显示模板。添加一个名为 DisplayTemplates 的文件夹并创建模型类型的强类型视图并将该列表传递给它。它会自动迭代并给你结果。

假设您有如下客户对象:

public string Name{ get; set; }
public string CustLevel{ get; set; }
public List<CustomerContact> Contacts { get; set; }
public List<CustomerLocation> Locations { get; set; }

然后在 Razor 中使用这个模型:

@Html.LabelFor(t=>t.Name);
@Html.LabelFor(t=>t.CustLevel);

@foreach(var contactlist in Model.Contacts)
{
  @Html.LabelFor(t=>t.ContactNum);
  @Html.LabelFor(t=>t.ContactType);
}