2010-06-10 60 views
9

我正在使用ASP.NET MVC与实体框架POCO类和FluentValidation框架。它运行良好,并且验证正在发生(因为我正在使用DataAnnotations)。我甚至获得了客户端验证工作。我对此非常满意。在ASP.NET MVC中使用ViewModel与FluentValidation

由于这是一个测试应用程序,我只是为了了解是否可以获得新技术一起工作(并沿途了解它们),现在准备尝试使用ViewModels而不是将实际模型传递给风景。我正计划在我的服务中使用像AutoMapper这样的东西来映射模型到ViewModel,但我首先有一个问题。

这是如何影响我的验证?我的验证类(使用FluentValidation编写)应该写入ViewModel而不是Model?还是需要在两个地方都发生?关于DataAnnotations(和FluentValidation)的一个重大交易就是你可以在一个地方进行验证,这个验证可以在任何地方“工作”。它实现了这个承诺(大部分),但是如果我开始使用ViewModels,那么我是不是失去了这种能力,必须返回到两个地方进行验证?

或者我只是在想它错了吗?

回答

4

还是我只是在想它错了?

可能;)

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

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