有点混乱,我确信很容易被清除:)。
假设我们有一张名为" Contacts"的表格。 "指数"此表的视图将是一个数据表,列出表中的所有联系人姓名,电子邮件和电话。现在,这将包含一个包含名字,电子邮件和电话的视图模型。
接下来我们需要一个详细信息页面,其中包含完整,IE,全名,第一或第二联系人,其他电话号码,网站地址和备注等的每个联系人的详细信息。这应该是第二个Viewmodel吗?
然后我们有一个创建页面,其中包含要填写的所有字段。这会是另一个视图模型吗?
最后,这一切都会进入同一个类文件还是单独的文件?
由于
答案 0 :(得分:3)
像往常一样,答案很常见,这取决于你真正想要实现它的方式。但是为了模式和有组织的代码,我建议你有:
答案 1 :(得分:2)
因此,您可以拥有Model和多个ViewModel。最好将每个ViewModel保存在不同的文件中。如果您使用与ViewModel相同的模型,那么您的应用程序应该非常小且简单,并且应该只包含CRUD操作。但是,如果您正在构建具有大型团队(具有两个或更多开发人员)的大型或企业应用程序,则应该具有依赖注入,服务,存储库,外墙,工作单元,数据访问对象等概念。
为了简化模型和ViewModel之间的映射需求,您可以使用AutoMapper https://github.com/AutoMapper/AutoMapper
或使用nuget Install-Package AutoMapper安装
答案 2 :(得分:1)
简短回答:是的。
答案很长:是的,在您的具体案例中似乎合乎逻辑。查看/编辑模型通常也有所不同 - 在数据类型中,包括的数据集,可编辑的字段与可查看的字段。另一方面,对于基于浏览器的现代前端,不太专业的视图模型可能会导致后端API和前端之间更松散的耦合,从而使UI更改变得更容易。
代码组织是一个主观问题。
答案 3 :(得分:0)
无需为视图创建多个视图模型。首先,您应该为数据库表创建模型(联系人,联系人详细信息等)。稍后根据您的视图要求,您可以使用模型创建视图模型。如果需要,甚至模型也可以直接用作视图模型。
最好为视图创建单独的视图模型。组合来自多个模型的数据非常有用,您也可以使用计算出的属性和方法。