在ASP.NET MVC中使用ViewModel和FluentValidation

Bri*_*ord 9 asp.net-mvc viewmodel fluentvalidation

我正在使用ASP.NET MVC与Entity Framework POCO类和FluentValidation框架.它运行良好,验证正在发生(就像我使用DataAnnotations).我甚至让客户端验证工作.而且我很高兴.

由于这是一个测试应用程序,我写的是为了看看我是否可以让新技术一起工作(并沿途学习它们),我现在准备尝试使用ViewModels而不是仅仅将实际模型传递给视图.我打算在我的服务中使用像AutoMapper这样的东西来做模型到ViewModel的来回映射,但我先问了一个问题.

这将如何影响我的验证?我的验证类(使用FluentValidation编写)是应该针对ViewModel而不是Model编写的?或者它是否需要在两个地方发生?关于DataAnnotations(和FluentValidation)的一项重大交易是,您可以在一个可以"无处不在"工作的地方进行验证.并且它实现了这个承诺(大多数情况下),但是如果我开始使用ViewModels,我不会失去这种能力并且必须回到两个地方进行验证吗?

或者我只是想错了?

Joh*_*ell 4

还是我只是想错了?

大概 ;)

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

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