代码之家  ›  专栏  ›  技术社区  ›  Zachary Scott

ASP.NETMVC2数据验证:这是否从DomainModel传递到ViewModel?

  •  2
  • Zachary Scott  · 技术社区  · 14 年前

    鉴于我对MVC和DDD的理解(必要时进行评论):

    • 域模型可以由工厂创建,也可以由存储库持久化。这些是POCO对象。
    • 视图模型包含视图所需的部分或完整域模型。它们是由与存储库交互的服务生成的。因此,域模型永远不会直接进入视图。同样,ViewModels也不会持久化。
    • 对于同一个域模型,您很可能有多个视图模型,因为您可以在多个视图上显示它。

    那么如何让ViewModels继承域模型数据验证呢?

    1 回复  |  直到 14 年前
        1
  •  2
  •   eulerfx    14 年前

    我在去年10月的模式与实践峰会(patterns&practicessummit)上,在接受采访时提出了同样的问题 Brad Wilson 他没有一个全球性的解决方案。

    我和他讨论的一个想法是扩展一个对象映射库,比如 AutoMapper 也可以将验证从域模型映射到视图模型。

    在设计框架以促进此场景时,需要考虑以下事项:

    1. 验证规则可能取决于上下文,因此对于特定视图模型可能是唯一的。企业库验证块允许使用配置文件设置验证逻辑—例如,可以扩展到传输到视图模型。

    2. 视图模型可能具有不属于域模型的属性,例如指定选中了某个“同意条款”复选框的属性。此属性需要验证,但是它特定于视图和用例,而不是域模型。这个场景作为另一个参数,至少部分地保持验证逻辑的独立性。