我希望这里的人们能给我一些关于如何正确执行此操作的想法。
目前我有一个用于渲染屏幕的 ViewModel。View 模型实际上包含了几个领域模型的扁平化数据。我已经用属性装饰了 ViewModel 以进行基本验证,但真正的验证工作发生在服务层。当服务层出现验证错误时,就会出现此问题。属性的名称(即 - UserName)与 ModelState 中的条目不匹配(即 - RegistrationViewModel.UserName)。
有没有人建议如何处理这个问题?
提前致谢!
史蒂文
我希望这里的人们能给我一些关于如何正确执行此操作的想法。
目前我有一个用于渲染屏幕的 ViewModel。View 模型实际上包含了几个领域模型的扁平化数据。我已经用属性装饰了 ViewModel 以进行基本验证,但真正的验证工作发生在服务层。当服务层出现验证错误时,就会出现此问题。属性的名称(即 - UserName)与 ModelState 中的条目不匹配(即 - RegistrationViewModel.UserName)。
有没有人建议如何处理这个问题?
提前致谢!
史蒂文
也许不是您问题的答案,但这是我通常的处理方式:
在域模型中,我不使用任何验证框架,也不使用它来提供用户友好的错误消息。我总是确保模型处于有效状态。当设置无效值时(在属性设置器中),我抛出异常。我使用域对象的构造函数在实例化时始终使它们处于有效状态,方法是使用默认值和构造函数参数。真正简单但功能强大,因为您始终可以确保您的模型处于有效状态。您应该对您的域对象进行单元测试以绝对确定。这种方法也适用于 orm。
所以我只在视图模型上使用流利的验证来提供用户友好的消息。
这不是最好的解决方案,但最后我依靠我的基本客户端验证来显示基本字段验证,任何超过此验证并在服务中验证的内容都会显示在验证摘要中。