有没有充分的理由创建ViewModel复制模型并添加验证逻辑? 为什么不简单地用验证逻辑扩展当前模型? 如果要创建ViewModel副本,则需要
如果您只是扩展基本模型,这些问题就会消失。那么为什么创建ViewModel层如此受欢迎呢?
答案 0 :(得分:1)
对于同一模型,您可以拥有两个具有不同验证逻辑的视图。
经典示例是一个注册表单,包含单页表单和多页向导。
在这两种情况下,模型都是相同的,但在向导视图中,它合法地提交半个填充的模型,而单页版本应该验证所有字段。
采用这种可能性进一步导致每种视图方法的一种视图模型。您总是为视图创建视图模型,因为您希望它提供一般性的灵活性。
此外,该视图非常罕见,与模型完全匹配。您通常需要多个模型加上一些奇数额外位。例如,登录为'的用户模型。标题,要显示的模型列表加上分页信息。
你可以通过使用ViewModels来避免你提到的一些问题,ViewModels简单地包装模型并在不需要额外逻辑的情况下公开它们的属性