Asp.net mvc 使用ASP.NET MVC制作母版/详细页的推荐方法是什么?
是否有人对使用ASP.NET MVC框架制作母版/详细页有任何建议/最佳做法 出身背景 我有一页客户信息,在每一页下我需要显示0条或更多关于该客户的相关记录。 数据库架构如下所示: 客户端-一对多->客户端数据 我目前正在为使用存储过程填充的数据类使用LINQ。因此,为了获得客户信息,我会写: 在视图中呈现每个客户机时,我需要显示相关数据,因此我需要为找到的每个客户机调用: 问题 实现这一目标的最佳方式是什么 使用ViewData并存储每个查询 使用视图的类型化模型,可能使用一个类来表示列表中包含相关信息的客户机 另外 谢谢,Asp.net mvc 使用ASP.NET MVC制作母版/详细页的推荐方法是什么?,asp.net-mvc,master-detail,Asp.net Mvc,Master Detail,是否有人对使用ASP.NET MVC框架制作母版/详细页有任何建议/最佳做法 出身背景 我有一页客户信息,在每一页下我需要显示0条或更多关于该客户的相关记录。 数据库架构如下所示: 客户端-一对多->客户端数据 我目前正在为使用存储过程填充的数据类使用LINQ。因此,为了获得客户信息,我会写: 在视图中呈现每个客户机时,我需要显示相关数据,因此我需要为找到的每个客户机调用: 问题 实现这一目标的最佳方式是什么 使用ViewData并存储每个查询 使用视图的类型化模型,可能使用
Kieron使用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; }
}
var clientDataQuery = from clientData in dataContext.GetClientData (client.ClientId)
orderby clientData.CreatedDate
select clientData;
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; }
}