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

时间:2015-01-07 19:17:51

标签: asp.net asp.net-mvc controller asp.net-mvc-5 repository

我有一个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会将它们提供给我?

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

1 个答案:

答案 0 :(得分:1)

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

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