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



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

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

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

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

我正在尝试弄清楚如何直接从我的 Customer 对象利用这些属性,而不必将 Customer 和 2 个单独的列表传递给我的视图。有人可以帮助我完成正确的工作流程,以便在 MVC5 中执行此类操作。这是我唯一缺少的部分。

假设您有如下所示的客户对象:

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);
}

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

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

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

最新更新