我刚刚第一次启动了一个MVC项目,我遇到了一个我真的没想到的问题:模型太多了。
没有太多不同的模型,但有太多不同的模型,但几乎完全相同。
我有一个相当复杂的页面,有几个组合框,一个详细对象列表以及一些我需要跟踪的无关的无关事物。更多信息归于视图而不是我回来(这很好)。
我有一个域模型,它始终保持不变。 (1型号)
我有一个单独使用的视图模型,它是域模型和包围它的一些额外信息。 (1型号)
我有一个使用表单模型,它是视图模型的副本,其中包含域模型的空shell副本,并带有验证内容。 (2个型号)
今天下午我需要改变一个属性的类型,我有三个不同的地方可以改变它。似乎我有太多的模型是单用的。对于那些应该比传统ASP.NET更容易的东西来说似乎有很多工作。
我的问题是:我做得对吗?应该有多种型号,还是我错过了一些明显的东西?
答案 0 :(得分:1)
不完全确定示例中的表单模型是什么 - 您是使用它来限制客户端的可发布字段还是使用它来映射到您的域?
在我自己的MVC网站中,我将拥有一个域模型(可能只是一个本地域或来自远程WCF服务),我将其一对一地映射到我的个人ViewModel,以便在屏幕上呈现并接收回帖。这些也包含我的验证(无论是注释还是流利等)。
然后,任何属性名称更改都将仅限于相关页面的ViewModel和域。
如果您处于在域模型之间复制属性的情况,那么某种基本视图模型结构可以很好地为普通实体提供服务,但总的来说,这并不是我发现个人的巨大开销。