9

我将 ASP.NET MVC 与 Entity Framework POCO 类和 FluentValidation 框架一起使用。它运行良好,并且验证正在按应有的方式进行(就像我使用 DataAnnotations 一样)。我什至已经让客户端验证工作了。我对此很满意。

由于这是一个测试应用程序,我正在编写只是为了看看我是否可以让新技术一起工作(并在此过程中学习它们),我现在准备尝试使用 ViewModels 而不是仅仅将实际模型传递给视图。我计划在我的服务中使用 AutoMapper 之类的东西来进行从模型到视图模型的来回映射,但我首先有一个问题。

这将如何影响我的验证?我的验证类(使用 FluentValidation 编写)是否应该针对 ViewModel 而不是 Model 编写?还是需要在两个地方都发生?DataAnnotations(和 FluentValidation)的一大亮点是您可以在一个“无处不在”的地方进行验证。它实现了这个承诺(大部分),但是如果我开始使用 ViewModels,我是否会失去这种能力并不得不回到将验证放在两个地方?

还是我只是想错了?

4

1 回答 1

4

还是我只是想错了?

大概 ;)

如果您将所有验证代码添加到您的 ViewModel 中,您只是在验证它们而不是您的实际模型。您真正改变的是哪些对象可以进入无效状态。

现在我很高兴只验证 ViewModel,然后将该信息传递回实际的模型和 DAO 层。尽管您的域是否可以进入无效状态是一个有争议的话题,但到目前为止,这种技术对我来说非常有用。在一个地方进行验证,并且我的持久性存储中没有无效对象。

于 2010-06-11T00:51:30.120 回答