在视图中显示多个数据列表(即 CustomerContacts、CustomerLocations)

Displaying multiple lists of data in a view (i.e. CustomerContacts, CustomerLocations)

我有一个 CustomersController,在 Detail.cshtml 视图中我需要显示该客户的联系人列表和该客户的位置列表。我有一个 Detail(int? id) ActionResult 并且我可以从控制器中访问我的 CustomerService。截至目前,在我的 Detail ActionResult 中,我能够做到:

var cust = _custService.GetCustomerById(id);
return View(cust);

如何让我的其余列​​表显示在视图中?我想我将在我的 CustomerService 中创建一个 GetContacts(customerID)、GetLocations(CustomerID),然后像我在上面调用 GetCustomerByID 一样调用它们。如果我这样做,在我看来我将如何访问这些列表。

我考虑的下一件事可能是创建一个具有所有基本客户属性的 ViewModel,例如 customer.Name、customer.Phone,但随后我试图弄清楚如何确保 ViewModel有客户的联系方式和位置。我是否会向 ViewModel 添加 2 个属性,例如 customer.contacts 和 customer.locations,因为 EF6 将使我可以使用它们?

对于在视图中获取与实体相关的多个信息列表的最佳方式有何建议?客户联系人和客户位置都是一对多

最佳做法是使用视图模型来传输数据,正如您所考虑的那样。

public class CustomerDetailViewModel {
    public string Name { get; set; }
    public string Phone { get; set; }
    public List<Contact> Contacts { get; set; }
    public List<Location> Locations { get; set; }
}