我已经好几天了,而且给我带来了很大的麻烦......
我有一个包含客户端详细信息的客户端模型,然后我有一个包含客户端不同地址的地址模型。当我点击客户端(CRUD)表中的详细信息链接时,我想在每个客户端的详细信息下显示(CRUD)表。我该怎么做呢?
答案 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 )
}