【发布时间】:2018-05-29 05:30:35
【问题描述】:
我们目前使用 DTO 进行 Web API 请求和响应
并使用 ViewModel 将数据传递给 MVC 中的 View
目前,我们有:
- DTO 作为一个单独的项目
- ViewModel 位于 UI 项目中(与 Controllers 一起的另一个文件夹)
在我们的案例中,我看到的唯一区别是 DTO 必须通过网络传递并作为 JSON 发送,而 ViewModel 必须在视图内部传递才能呈现为 HTML。
我们应该为 MVC 应用程序和我们的应用程序/其他客户端维护单独的传输对象,还是只通过 DTO 完成这两项工作,即在 View 内部传递 DTO 而不是 ViewModel?它有什么可能的缺点?
我阅读了许多回复 here,但在我们的案例中没有示例和令人信服的理由将 ViewModel 和 DTO 分开。
【问题讨论】:
-
MVC 在技术上不需要 ViewModel。它只需要一个模型(只有一个 M)。一个模型可以在多个视图中使用。你是在问一个模型在哲学意义上是否像一个 DTO?或者您是在问是否要求每个 View 都有自己的 ViewModel(答案是否定的)?
标签: c# asp.net-mvc viewmodel dto asp.net-mvc-viewmodel