我最近使用MVC框架(ASP.NET MVC)完成了一个项目。该项目使用单独的DTO类由控制器传递给View。该模型几乎远离了视图。这在MVVM中的VM和我的DTO之间形成了一个内涵。对该项目的回顾性思考表明,如果没有DTO,我就无法做到(因为我的模型非常适用于应用程序层,并且由于安全原因无法传递给Web Tier)。
所以这是我的问题 - VM(View Model)在MVC中是必需的吗?是否存在控制器将Model直接传递给View的生产应用程序?
答案 0 :(得分:3)
视图模型的目的非常简单 - 它是一个具体的模型 设计用于视图。 它在域顶部提供简化的界面 使视图中的决策制定最小化的模型。
- “ASP.NET MVC 4 In Action”
当您有许多不同的值传递给视图时,您可以获得相同的灵活性 快速添加新条目,或重命名现有条目,成为你最大的敌人。你留在你的 拥有跟踪项目名称和值;你没有得到Microsoft IntelliSense和编译器的帮助。 处理软件复杂性的唯一可靠方法是通过适当的设计。因此,为每个视图定义对象模型可帮助您跟踪视图真正需要的内容。我建议你定义一个 您添加到应用程序的每个视图的视图模型类。
- Dino Esposito编写的“Microsoft ASP.NET MVC编程”
在每个ASP.NET MVC教程和书中,作者都认为ViewModel是必要的。根据我的经验,没有ViewModels,我的项目变得僵硬和脆弱;所以,我强烈建议您在项目中使用ViewModels。
答案 1 :(得分:1)
考虑是否有员工表
EmpID
Fname
Lname
DeptID
DesigID
Email
Phone
所以,如果你有一个代表这个表的类。您可以将其视为要查看的模型。 EF将为您提供列表,您可以在视图中显示。
所以我相信使用View Models而不是直接将EF对象传递给视图
是一个很好的做法