使用ASP.NET MVC执行主/详细信息页面的推荐方法是什么?

时间:2009-02-21 16:51:02

标签: asp.net-mvc master-detail

有没有人对使用ASP.NET MVC框架进行主/详细信息页面有任何建议/最佳实践?

背景

我有一页客户信息,每一个我需要显示0个或更多关于该客户的相关记录。

数据库模式如下所示:

    客户 - 一对多 - > ClientData

我目前正在使用LINQ来处理使用存储过程填充的数据类。所以要获取我写的客户信息:

var clientQuery = from client in dataContext.GetClients ()
orderby client.CompanyName
select client;

当每个客户端在视图中呈现时,我需要显示相关数据,因此我需要为每个找到的客户端调用它:

var clientDataQuery = from clientData in dataContext.GetClientData (client.ClientId)
orderby clientData.CreatedDate
select clientData;

问题

实现这一目标的最佳方式是什么?

  1. 使用ViewData并存储每个查询
  2. 使用视图的类型化模型(可能使用类来表示具有列表中相关信息的客户端
  3. 其他...
  4. 谢谢, 基隆

1 个答案:

答案 0 :(得分:2)

使用IDictionary&gt ;,然后将其包装到viewdata类中。

这将允许您在控制器级别进行过滤/排序,同时保持客户端与其数据之间的严格关联。

示例:

public class ClientController{
    public ViewResult ClientList(){
        var clientsAndData = new Dictionary<Client,IEnumerable<ClientData>>();

        var clients = from client in dataContext.GetClients()
            orderby client.CompanyName
            select client;

        foreach( var client in clients )
          clientsAndData.Add(
            client,
            (
                from clientData in dataContext.GetClientData(client.ClientId)
                orderby clientData.CreatedDate
                select clientData
            ).ToList()
          );

        return View( new ClientListViewData{ Clients = clientsAndData } );
    }
}

public class ClientListViewData{
    public IDictionary<Client,IEnumerable<ClientData>> Clients{ get; set; }
}