使用FluentValidation时,将域模型验证错误映射到ViewModel

时间:2011-10-28 14:11:37

标签: asp.net-mvc fluentvalidation

我希望这里的人能就如何正确地做到这一点给我一些想法。

目前我有一个用于渲染屏幕的ViewModel。 View模型实际上包含几个域模型的展平数据。我已经使用属性修饰ViewModel来进行基本验证,但真正的验证工作发生在服务层。当服务层出现验证错误时,会出现此问题。属性的名称(即 - UserName)与ModelState中的条目不匹配(即 - RegistrationViewModel.UserName)。

有没有人建议如何处理这个?

提前致谢!

史蒂芬

2 个答案:

答案 0 :(得分:1)

也许不是你问题的答案,但这就是我通常这样做的方法:

在域模型中,我不使用任何验证框架,并且我不使用它来提供用户友好的错误消息。我总是确保模型处于有效状态。设置无效值时(在属性设置器中)抛出异常。我使用域对象的构造函数,通过使用默认值和构造函数参数,在实例化时始终将它们置于有效状态。真实简单但功能强大,因为您始终可以确保您的模型处于有效状态。您应该对您的域对象进行单元测试,以确保无误。这种方法对于orm来说也很有用。

所以我只在viewmodel上使用流畅的验证来提供用户友好的消息。

答案 1 :(得分:0)

这不是最好的解决方案,但最终我依靠我的基本客户端验证来显示基本的字段验证,任何过去的并且在服务中验证的内容都会显示在验证摘要中。