2010-11-26 135 views
1

在开发过程中,我遇到了一个叫做“域模型与视图之间的阻抗不匹配”的问题。为了解决这个问题,我决定使用ViewModel模式 - 为每个视图(强类型)我们创建viewmodel类。但是,验证逻辑的位置在哪里?在viewmodel类中还是在我们的领域模型对象中?我们需要执行操作来查询数据库 - 在控制器操作中,然后填充viewmodel或直接在viewmodel中?ASP.NET MVC查看模型模式 - 验证和数据库操作

谢谢。

回答

2

您应该有视图模型的验证逻辑。这是视图发送的内容以及应该验证的内容。就填充viewmodel而言,这里介绍如何继续:编写一个查询数据库并返回模型的存储库。然后将这些模型映射到视图模型(AutoMapper可以帮助您在这里)。最后将视图模型返回到视图。这也适用于其他方式:用户将一些数据发布到控制器操作,因为视图模型的形式一旦被验证就映射回模型并传递到存储库进行更新。

作为数据注释的替代方法,您可以查看FluentValidation以验证您的视图模型。它与ASP.NET MVC的integrates nicely