ASP.NET MVC中的视图模型如何与MVC模式进行交互?

时间:2018-07-20 02:23:44

标签: asp.net asp.net-mvc design-patterns model-view-controller architecture

我使用了 What is ViewModel in MVC?

的一些想法

我已经阅读了许多其他文章和文章,但是还没有阅读任何能真正解释它们之间相互作用的文章,所以我的文章涉及很多。

首先,我将从下面的问题开始,但是上下文可能解释了我的一些困惑。

问题
ASP.NET MVC的视图模型概念如何适合整个MVC设计模式?具体来说,域模型,视图模型,视图和控制器之间的交互是什么?

我从未考虑过将模型分为视图模型和域模型,实际上只是使用了我认为的域模型(在ASP.NET之外同时包含视图模型和域模型是否正常? MVC?)。

似乎视图/视图模型应该相互依赖,因为它们彼此之间是如此特定。

MVC的想法不是使代码更具可维护性和可重用性吗?因为视图模型特定于视图,所以它会在其他地方使用吗?而且,如果不会在其他地方使用它,那么仅在视图中定义视图模型是否更可维护?

上下文
在学习了一些软件设计和开发课程之后,我学习了关于架构设计模式(主要是MVC)的知识。从我所学到的和已在项目中实施的内容(如果我错了,请纠正我)是MVC分隔了

  • 数据/业务逻辑(模型)
  • 用户界面和逻辑(视图)
  • 应用逻辑(控制器)
彼此

。此外,

  • 模型和视图将Controller用作服务来在彼此之间传输数据
  • 模型或视图都不认识

我最近开始了一个实习,其中我们使用ASP.NET MVC来构建我们的Web应用程序。使用了一段时间后,我显然注意到该模型分为两类:域模型和视图模型。
据我了解(如果我错了,请再次纠正我):

  • 域模型定义实际/物理对象
  • 视图模型仅定义需要在视图中显示的数据或用于显示数据的任何逻辑

因此,基本上,用户的个人资料可能会显示其姓名,年龄和个人简介,并且有一个查看模型:

    class UserProfileViewModel
      string Name
      int Age
      string Bio

尽管可能存在域模型

    class User
      string ID
      string Name
      string Email
      int Age
      DateTime DateJoined

0 个答案:

没有答案