我的 MVC 应用程序有一个定义良好的域模型,每个模型都执行自己的业务规则检查。
我的问题是业务规则是否也应该在视图模型或控制器中复制,还是应该只允许模型生成验证错误?
让我们假设我们正在讨论的验证不能在客户端完成,并且比可以通过向视图模型属性添加验证属性来完成的简单字段验证更复杂。
允许模型处理所有验证的问题在于,它生成的错误消息可能不适合与其耦合的特定视图,例如,字段名称可能不正确。此外,我需要使用视图模型属性名称而不是域模型中的属性名称将错误添加到 ModelState。
向视图模型/控制器添加相同的业务规则验证的问题是明显的重复维护问题,这意味着我的域模型中的验证真的不应该产生任何错误,这使得它有点毫无意义。
人们通常如何处理这个问题?