2

是否有人对使用 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 回答 1

2

使用 IDictionary>,然后您应该将其包装到 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; }
}
于 2009-02-21T17:22:12.210 回答