我们的应用程序尽量使控制器保持较小,我们的视图关注UI,并且我们为每个视图都有一个ViewModel来拉入模型数据。我们使用AutoMapper将模型映射到ViewModels中。
在某些情况下,我们需要很好的代码来构建ViewModels,虽然在技术上可以在AutoMapper的地图功能中完成,但它变得庞大而丑陋。所以我们有了这个逻辑,它已经进入了我们的一些ViewModels中,但是这些行在长度上变成了200+行,感觉就是不正确。例如,对于一个ViewModel,我们有大约六个属性,这些属性不是来自单个模型,而是来自大约4-5个模型,并且是动态的,因为它们是在运行时计算的,所以它不像将模型中的名称参数映射到我们的ViewModel中那么简单。
有没有其他人遇到过这个问题,或者发现有必要为那些不能从单个模型轻松构建的ViewModel创建某种ViewModels工厂?
编辑
例如:假设你有一个课程的页面,比如“法语入门”。当学生访问课程页面时,我可能希望根据学生的注册状态、注册、过去的历史记录、学生注册的其他课程等更改如何显示有关该课程(或其他课程)的附加信息。我这里有两个模型,课程和学生,但我可能希望根据某些业务规则在ViewModel中包含附加信息。
发布于 2012-09-24 22:14:04
如果它是一个业务逻辑,那么它就不应该放在您的映射层中。定义Dtos并在业务层中尽可能多地准备对象。如果您的业务模型和视图模型之间存在如此巨大的差异,这意味着您可能需要另一个层来将庞大的业务域模型转换为更容易映射到视图模型的数据传输对象。一般来说,你应该避免在你的映射层中放置复杂的业务逻辑。
不幸的是,如果没有来自您的部分的特定代码示例,将很难进一步扩展。
https://stackoverflow.com/questions/12566783
复制相似问题