MVC3-如何链接来自不同控制器视图的数据

时间:2011-10-05 12:06:18

标签: asp.net-mvc-3

我已经好几天了,而且给我带来了很大的麻烦......

我有一个包含客户端详细信息的客户端模型,然后我有一个包含客户端不同地址的地址模型。当我点击客户端(CRUD)表中的详细信息链接时,我想在每个客户端的详细信息下显示(CRUD)表。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

在显示客户端详细信息时使用复合视图模型,或在显示客户端详细信息时使用AJAX加载地址。我可能会选择前者,因为两者密切相关,只有地址的控制器或动作似乎有点过分(除非你没有其他信息就自己显示它们)。

 public class ClientDetailsModel
 {
      public ClientDetails Details { get; set; }
      public List<Address> Addresses { get; set; }
 }


 public ActionResult Details( int id )
 {
       var client = this.ClientRepository.GetByID( id );
       var addresses = this.ClientRepository.GetAddressesForClient( client );
       return View( new ClientDetailsModel { Details = client, Addresses = addresses } );
 }

这与我将要做的类似,尽管我更有可能只提取相关属性并为每个客户端/地址部分填充平面模型类,而不是使用DB中的实际实体。 AutoMapper可以为此提供很大的帮助。

在视图中,您可以将地址显示抽象为局部视图,并在需要重用代码时为每个地址呈现它。

  ... display client details...

  @foreach (var address in Model.Addresses)
  {
       @Html.Partial( "_Address", address )
  }