Model view controller 为复杂页面映射DTO的正确方法

Model view controller 为复杂页面映射DTO的正确方法,model-view-controller,automapper,dto,Model View Controller,Automapper,Dto,我有一个MVC应用程序,我已经开始专门使用DTO向视图发送数据。我使用AutoMapper来简化这个过程 假设我有一个客户有很多订单。为了显示一个简单的客户概览页面,我可以使用AutoMapper和一个简单的DTO类来映射客户名称、地址等。为了映射订单,我可以自动映射一个客户列表。订单到一个更简单的列表 我现在被困在我希望两者都在同一视图中的页面上。也许是一个简单的标题,上面写着客户的名字和电话号码,然后是一份订单清单。在某些情况下,分部是完美的解决方案,但不是全部 所以我的问题是,像这样的页面

我有一个MVC应用程序,我已经开始专门使用DTO向视图发送数据。我使用AutoMapper来简化这个过程

假设我有一个客户有很多订单。为了显示一个简单的客户概览页面,我可以使用AutoMapper和一个简单的DTO类来映射客户名称、地址等。为了映射订单,我可以自动映射一个客户列表。订单到一个更简单的列表

我现在被困在我希望两者都在同一视图中的页面上。也许是一个简单的标题,上面写着客户的名字和电话号码,然后是一份订单清单。在某些情况下,分部是完美的解决方案,但不是全部


所以我的问题是,像这样的页面的DTO应该是什么样子的,最好使用AutoMapper来映射它。到目前为止,在我的研究中,我看不出AutoMaper如何像这样映射嵌入的可枚举项。

当您创建映射时,忽略集合/可枚举项,只将简单对象映射到简单对象,例如CreateMap

当您执行映射时,您可以使用集合,而AutoMapper只会做正确的事情,例如Map


如果要映射一个包含集合的对象,例如Customer到CustomerTo,其中每个对象都有自己的订单集合,只要您为Customer对象创建了CreateMap,为Order对象创建了CreateMap,可枚举项就会自动映射,除非您在客户映射中特别将其设置为忽略。

谢谢,我会试一试。我不知道它是如何映射包含在对象中的集合的,但从您所说的情况来看,这只是一个先创建两个映射的情况。