我是一个ASP.NET MVC新手,但之前使用过很多模型 – 视图 – 控制器框架.
我recently came across将您的特定视图需要的数据(实际上,它被分配给ViewData)收集到一个名为(NameOfView)ViewModel的新类的约定.
收集这些数据,使其与View / Controller交互提供的功能相关联,这使我成为一个辅助结构,甚至是闭包机制(在’封装一组变量’的意义上).
那么为什么它被称为’ViewModel’,因为它既不是视图也不是模型?
有没有其他人觉得这个名字令人困惑?
编辑:只是将属性放到View上有什么问题,以便Controller可以填充它们(如在其他MVC框架中)?
解决方法
该模型是数据的视图不可知表示.视图模型是数据的视图特定表示:它是可能从给定视点出现的模型.
考虑一个由原始数据点组成的模型;然后,直方图视图可能具有视图模型,该视图模型由一组桶和从该数据中提取的总数组成.
从逻辑上讲,它是模型的子集或转换 – 它可以使用视图特定功能按需生成,并且模型作为其唯一输入.
关于视图与属性包或自定义对象的属性……我确信有人对此有强烈的感受,但我个人并不认为有很大的区别.您正在生成模型的视图特定表示并以某种方式传递它;确切的机制似乎并不那么重要.