【问题标题】:Advantages and Disadvantages of having a ViewModel for every Model [duplicate]每个模型都有一个 ViewModel 的优点和缺点 [重复]
【发布时间】:2013-03-27 23:08:43
【问题描述】:

我有一个 MVC 应用程序,我主要将模型传递给控制器​​。我有一些使用视图模型的情况,但大多数 CRUD 操作都是直接完成的。我在用于验证模型的模型类中的每个属性上都有数据注释。 但是最近我听说更好的做法是使用 ViewModels——每个视图一个。在我看来,这似乎是不必要的,就维护而言只是程序员的噩梦。我想知道是否有人同意或不同意我的观点?

【问题讨论】:

  • 我很少使用视图模型,主要是为了帮助构建视图。例如,如果您的视图需要一个模型加上一些名称值对作为选择列表,那么我将创建一个包含模型和此列表的视图模型,它减少了对 tempdata 和 viewdata 传递内容的需要大约。否则,我会尽可能使用域模型
  • 我尽量不直接使用我的领域模型,它通常具有比任何视图都需要的更多属性,当然也不需要方法。此外,随着需求的变化,它有助于隔离需要进行更改的地方
  • 已经讨论了很多:stackoverflow.com/questions/5248746/…stackoverflow.com/questions/664205/viewmodel-best-practices 请注意使用 AutoMapper 的建议,以避免您所说的维护噩梦。

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

我个人认为“模型”和“视图模型”这两个术语经常被混淆。

在 Microsoft-Tutorial-MVC-World 中,“模型”直接映射到数据库“实体”,您可以轻松执行 CRUD 操作。但在中大型 ASP.NET MVC 应用程序中,您很少会这样做。

因此,您可能会构建一组“视图相关的业务对象”以在视图之间来回传递。如果你愿意,可以称他们为“模特”。如果你愿意,可以称它们为“ViewModels”。真的没关系。它们执行相同的功能。他们都将“M”放在“MVC”中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2015-07-10
    • 2015-05-18
    • 1970-01-01
    • 2010-10-08
    • 2011-12-19
    相关资源
    最近更新 更多