这个问题确实具有更大的架构意义,我欢迎任何意见或建议:
在谈到OOP时,我更像是马丁福勒的学派。我相信你应该能够直接在UI中呈现域实体。如果我有一个Car实体,我应该能够将它呈现给一个网页。域模型是横切关注点而不是层。将域模型作为层处理导致贫血域模型。我不相信OOP架构中的DTO。
我的视图模型是一种组合视图中所需的域实体的方法。这不是DTO。我不明白使用像DTO这样的视图模型的原因是什么,虽然使用automapper似乎很常见?
因此,使用元数据方法,我将数据注释放在我的域模型上,以提供有关如何呈现和验证实体的任何UI实现提示。我喜欢拥有一个富有的域模型。
在MVC3中,如何使用驻留在UI层中的资源文件完成此操作(特别是使用显示数据注释)?是否有本机实现或我是否需要自己创造?或者我的方法在某处出错了?
答案 0 :(得分:0)
所以我最终在域模型中放置了一个resourse文件并添加了一个自定义的HiddenFieldAttribute,这样我就不必在域模型中引用MVC程序集了。
我仍然从根本上不同意视图模型确实是DTO,并且域模型应该构造为层。我觉得以这种方式构建应用程序会创建真正没有价值的抽象。如果域模型真的是一个层,那么我们将构建一组逻辑接口来访问它,我们不这样做。这是一个跨领域的问题。
感谢olivehour进行有趣的讨论,并建议将资源文件放入域模型程序集中。