gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 术语让我感到困惑 - 为什么是 'ViewModel' ?

转载 作者:行者123 更新时间:2023-12-04 09:22:11 24 4
gpt4 key购买 nike

我是 ASP.NET MVC 新手,但以前使用过许多模型- View - Controller 框架。

recently came across将特定 View 需要的数据片段(实际上,它分配给 ViewData)收集到一个名为 (NameOfView) 的新类中的约定 View 模型 .

收集这些数据以便它与 View / Controller 交互提供的功能相关联,让我觉得它是一个辅助结构,甚至是闭包机制(在“封装变量集合”的意义上)。

那么为什么它被称为“ViewModel”,因为它既不是 View 也不是模型?

有没有人觉得这个名字很困惑?

编辑 : 将属性放在 View 上以便 Controller 可以填充它们有什么问题(就像在其他 MVC 框架中一样)?

最佳答案

在阅读有关此主题的文章时,我遇到了关于开发人员为什么想要或不想使用 ViewModel 的各种争论。有些人甚至认为 ViewModel should never expose anything more than strings .在这一点上,我的想法并没有那么极端。然而,我同意,将域/核心对象暴露给 View 并不是一个好主意。经过一些第一手经验后,消除这种依赖性感觉更干净。

虽然我不同意 Daniel Root 下面的所有内容 a pretty good case for a ViewModel :

Most MVC examples show directly using a model class, such as a LINQ-to-SQL or Entity Framework class. The Visual Studio wiring for MVC even steers you into this concept with it's default "Add View" code-generation, which lets you quickly gen up views based on a single model class. However, in real-world-apps you often need more than just a single table's data to build out a page. Some examples get around this by stuffing secondary data into ViewData, but a better way to do this is to create a "roll-up" class to contain properties for everything your view will need. This has the added benefits of being more strongly-typed, supporting intellisense, being testable, and defining exactly what a view needs.



Jeff Handley 对 ViewModel pattern 给出了很好的描述。他认为可以与 MVC 结合使用。

编辑
我最近将我的想法与 Jimmy Bogard's 保持一致关于 View 模型。在每次实现都经历了相当多的痛苦之后,我尝试了 having one view model per view creates更干净的开发体验。

关于asp.net-mvc - ASP.NET MVC 术语让我感到困惑 - 为什么是 'ViewModel' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com