我刚开始使用ASP.NET MVC试图首先理解这个哲学.我想我很清楚控制器和视图所扮演的角色,但我对模型部分有点困惑.一些消息来源说它的域模型,有人说它是数据模型,有些人说它是绑定到视图的对象.
恕我直言这些是非常不同的事情.所以,有人可以一劳永逸地清除这个吗?
该模型是"应用程序运行的信息的特定于域的表示".它不仅仅是数据模型,因为它的级别低于MVC模式所考虑的级别,但(例如)它是封装数据的类,并允许您对它们执行处理.
MS的Scott Guthrie在他的公告中使用了这个定义:
基于MVC的应用程序中的"模型"是负责维护状态的应用程序的组件.通常这种状态持久存储在数据库中(例如:我们可能有一个Product类,用于表示SQL中Products表的订单数据).
进一步阅读:
在MVC维基百科文章
C2上的MVC模式
我想实际添加一个额外的层来使事情更清晰.基本上,"模型"是特定于域的东西,并且知道如何持久化(假设持久性是域的一部分).
IMO,我提到的另一层我称之为ViewModel ...有时,传递给视图的"模型"实际上与域无关......它将包含验证信息,用户显示信息,查找列表值以在视图中显示.
我认为这是你所拥有的脱节:-)