MVVM ViewModel 与 MVC ViewModel

2024-05-12

ViewModel 是一个在 MVVM (Model-View-ViewModel) 和 ASP.NET MVC 的推荐实现中使用的术语。鉴于每种模式都使用相同的术语,研究“ViewModel”可能会令人困惑。

MVC ViewModel 和 MVVM ViewModel 之间的主要区别是什么?例如,我认为 MVVM ViewModel 更丰富,因为缺少控制器。这是真的?


这是一个相当具有挑战性的问题,需要简洁地回答,但我会尝试一下。 (请记住,此类问题的答案仍然是开发人员之间争论的主题。)

在 MVC 中,ViewModel 提供渲染视图所需的所有信息。它包含的数据是使用模型中定义的数据创建的。 View 读取 ViewModel 并呈现输出。来自视图的输入被传递到控制器,控制器操纵模型,构造适当的视图模型,并将其传递给视图进行渲染。

在 MVVM 中,ViewModel 提供与 MVC 中相同的功能,但它还通过提供允许视图操作模型的命令来替换部分 MVC 控制器。 WPF 数据绑定根据 ViewModel 中的更改管理视图的更新(这有效地取代了 MVC 控制器的其余功能)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVVM ViewModel 与 MVC ViewModel 的相关文章

  • 如何制作抗崩溃的ios应用程序

    我现在正在编写 ios 应用程序一段时间 但我的应用程序仍然经常崩溃 并且需要时间才能使它们变得非常稳定 我觉得这很烦人 那么 有没有关于防崩溃编程ios应用程序的编程模式呢 打开编译器警告 删除所有警告 运行静态分析器 删除所有警告 使用
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • MVC 下拉列表未映射到模型

    我正在尝试使用 EF codefirst 在 MVC 3 中开发应用程序 当我使用 int 属性和约定来设置外键关系时 例如 public class Patient public int ConsultantId get set 然后 我
  • MVC 5 动态行与 BeginCollectionItem

    单击按钮时向表添加 删除行的最佳方法是什么 我需要从子类属性创建的行 子类是主类 模型中的列表 当前有一个视图 模型是 MyMain 它使用 RenderPartial 引用部分视图 分部视图显示模型的属性 一个名为 MyChild 的类
  • ASP.NET MVC 控制器无法使用流内容正确返回 HttpResponseMessage

    正如标题所示 我没有让 MVC 控制器正确返回 HttpResponseMessage HttpGet AllowAnonymous public HttpResponseMessage GetDataAsJsonStream object
  • 使用超类创建构建器时,父类无法返回子类的实例[重复]

    这个问题在这里已经有答案了 如果我使用构建器模式来配置新对象 我可能有两个类 例如Game and HockeyGame 如下所示 当我想创建一个新的HockeyGame 我得到它的构建器并开始调用方法来根据需要配置对象 我遇到的问题显示在
  • JQuery - 使用 JSON 的属性创建输入

    我正在尝试使用 JSON 设置的 id 和 value 属性创建一个输入 我有一个获取 JSON 的 ajax 调用 返回的数据很好 对于 JSON 中的每个对象 我想创建一个带有 ID 和 JSON 值的按钮 阿贾克斯调用 ajax ty
  • 使用策略和工厂模式进行依赖注入

    我正在开展一个业余项目 以更好地理解控制反转和依赖注入以及不同的设计模式 我想知道是否有将 DI 与工厂和策略模式结合使用的最佳实践 当策略 从工厂构建 需要每个可能的构造函数和实现不同的参数时 我面临的挑战就出现了 因此 我发现自己在服务
  • 实体类型 ApplicationUser 不是当前上下文模型的一部分。在项目开始时使用了两个不同的数据库

    我使用实体框架创建了一个 MVC 4 应用程序来读取数据并将数据写入我在 Azure 数据库上托管的数据库 Azure 数据库应该保存应用程序数据和应用程序的登录数据 但是 当我第一次创建应用程序时 我忘记删除到本地计算机的连接字符串 因此
  • 在 ASP.NET MVC 中强制使用 Json() 中的小写属性名称

    鉴于以下课程 public class Result public bool Success get set public string Message get set 我将在控制器操作中返回其中之一 如下所示 return Json ne
  • 具有 ASP.NET Identity 的 MVC 5 - 用户登录时获取声明

    我正在使用 OWIN 2 0 在登录用户后 我想从数据库中检索现有的声明 但如果我尝试获取用户的声明 它们将为空 如果我将相同的代码放入任何被调用的后续控制器中 那么声明就在那里 似乎只有在首次登录后的下一个请求之前 这些声明才可用 为什么
  • C# SMTP 身份验证失败,但凭据正确

    这是我的问题 我编写了以下程序来测试是否可以发送电子邮件 class Program static void Main string args try Console WriteLine Mail To MailAddress to new
  • 将 Javascript 类数组传递给 MVC 控制器?

    我正在尝试将一系列服务传递给我的控制器 我尝试了很多不同的方法来让它工作 在进入控制器之前序列化数据 序列化每个服务 唯一有效的方法是将控制器参数更改为字符串并序列化数组 然后使用 JsonConvert 但我 d 宁愿不这样做 使用指定的
  • 显示 PDF ASP.Net MVC

    我的桌面上有一个文件用于测试 我试图在如下视图中显示它 ViewBag Title ShowFile h2 ShowFile h2 我用于控制器的代码是 HttpGet public ActionResult ShowFile string
  • 服务层设计。将事物放入服务层的原因

    我有一些与设计相关的问题 should service layer interfaces居住在一个domain layer 例如user service 将代码部分移动到单独层的主要原因是什么 should service layer居住在
  • 从 .Net MVC 视图获取 HTML,而不在浏览器中实际渲染视图?

    我的控制器中有一个 ActionResult 我想从中发送 HTML 电子邮件 该电子邮件的正文是由视图生成的 我可以在传递模型时获取视图的结果并避免将其发送到浏览器 而不是在控制器中使用 2 个 actionresults 方法吗 Mvc
  • 如何为客户端和服务器缓存设置不同的缓存过期时间

    我想让某些页面为客户端提供 10 分钟缓存 为服务器提供 24 小时缓存 原因是如果页面发生变化 客户端将在 10 分钟内获取更新版本 但如果没有任何变化 服务器只需每天重建一次页面 问题在于输出缓存设置似乎覆盖了客户端设置 这是我的设置
  • 如何根据 ASP.NET VNEXT MVC6 中给出的路径进行虚拟路由/重定向?

    我有一个网站 它在不同的路径上公开多个 API 每个 API 由特定于应用程序部分的控制器处理 例如example com Api Controller Action param1 stuff 其中控制器发生变化 但操作保持相当一致 我有几
  • 带双重检查锁的单例设计模式

    假设您有以下代码 1 为什么我们使用双重检查锁 为什么单锁不够好 请提供详细的例子 2 这种实施方式的主要缺点是什么 我该如何证明呢 Thanks public sealed class SomeSingleton5 private sta
  • 构建 ViewModel 的合适粒度是多少?

    我正在开发一个新项目 在看到以前项目的一些困难后 这些项目没有提供足够的视图与模型的分离 特别是使用 MVC 模型和视图开始有点相互渗透 我想使用 MVVM 我了解基本概念 并且很高兴开始使用它 然而 有一件事我有点忽略 ViewModel

随机推荐

  • 数组长度未定义[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图按如
  • 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

    首先 大家好 这是我在这里提出的第一个问题 所以我希望我没有搞砸 在写这篇文章之前我用谷歌搜索了很多 我对编码 C 很陌生 我正在自学 考虑到有人告诉我 只为任何随机引擎播种一次是一个很好的做法 我在这里可能是错的 什么是正确 最佳 更有效
  • 如何根据特定字段对 solr 查询的前 100 个结果进行排序?

    我想使用特定字段对 solr 的前 100 个文档进行排序 但它对整个结果集进行排序 然后显示结果 以下是我的代码 query1 setQuery Natural Language query1 setStart 0 query1 setR
  • 谷歌地图从邮政编码获取纬度和经度

    是否可以使用 google api 仅传递邮政编码来获取经度和纬度 感谢您的任何提示 再见 只需创建一个实例google maps Geocoder http code google com apis maps documentation
  • 如何编写在日期时间字段上执行 group_by MONTH 的 Ecto 查询

    我正在执行 ecto 查询并尝试进行分组q created date 此查询成功执行了 GROUP BY 但它是按秒执行的 我正在尝试按月分组 MYQUERY gt group by q q created date q id 有没有类似的
  • 如何在 Ruby on Rails 3 中使用 Active Record 搜索文本?

    如何在 Ruby on Rails 中搜索字符串 例如 列包含 文本 的所有记录 Active Record 有方法吗 还是我必须使用 SQL LIKE Model find all conditions gt name LIKE tag
  • Google 地图 v3 - 阻止 API 加载 Roboto 字体

    Google 将样式添加到地图容器中以覆盖我的样式 我知道如何解决这个问题 但API v3 8 9 exp 还加载了我并不真正需要 想要的网络字体 Roboto 有什么设置 选项 方法可以解决这个问题吗 我可以阻止 API 添加额外的 CS
  • 为程序员设置 Mac [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Home 键转到 Visual Studio 中的行首吗?

    Visual Studio 中的哪个选项可以让 Home 键转到行首 现在你必须做 Home Home or Home Ctrl Left Arrow 我希望 home 位于该行的开头 我以前见过 但现在找不到了 在 工具 自定义 键盘 中
  • mod_rewrite 有例外

    为了将我的服务器上的每个请求重定向到我使用的安全连接 RewriteCond SERVER PORT 80 RewriteRule https mywebsite com 1 R L 效果完美 但是我需要两条路径不被重定向 说我什么时候访问
  • 如何在 access_token 中添加角色声明,目前它是在 id_token 中?

    我正在使用 PKCE 跟踪身份验证代码流 我的身份提供程序是 Azure Active Directory 我从应用程序注册创建了一个应用程序 客户端应用程序 在清单中 我添加了如下所示的 appRoles appRoles allowed
  • 如何在控制台中隐藏日志消息的来源?

    当将消息输出到控制台时 还会显示源代码 在 Chrome 开发者工具中 它位于右侧 console log Foo Source Foo test js 1 Output 但是 在某些网站上 会显示消息without正在显示的源 例如Fac
  • 如何使用 PySpark 预处理图像?

    我有一个项目 需要为 1 设置大数据架构 AWS S3 SageMaker 的概念验证使用 PySpark 预处理图像 2 执行 PCA and 3 训练一些机器或深度学习模型 我的问题是了解如何使用 PySpark 操作图像数据 但无法在
  • 重写 __cmp__ python 函数

    嗨 我是压倒一切的 cmp 如果传递的第二个对象是None 或者如果它不是一个实例someClass 然后返回 1 我不明白这里到底发生了什么 class someClass def cmp self obj if obj None ret
  • 编译器可以报告未知属性的错误吗?即使有范围?

    在N3291 7 6 1 3 5 属性语法和语义 decl attr grammar 关于如何属性是用我读过的源代码写的 使用一个属性范围令牌是有条件支持的 实现定义的行为 and For an 属性标记本国际标准中未指定 该行为是实现定义
  • TCPDF - 来自 mysql 的打印表显示重复的第一行

    我是 TCPDF 的新手 我面临的小问题是所有输出数据都显示同一行 我的意思是第一条记录重复数据库中存在的总数据 行 的次数 这是我的代码 tbl header
  • 从 Xcode 更改按钮文本?

    我有一个 IBAction 连接到 Interface Builder 中的一个按钮 是否可以在运行时从我的代码中更改按钮 在 IB 中 上的文本 如果您的代码中有一个连接到某个操作的按钮 则无需实例变量即可更改标题 例如 如果按钮设置为以
  • 在不同进程之间共享列表?

    我有以下问题 我编写了一个函数 它将列表作为输入 并为列表中的每个元素创建一个字典 然后我想将这本字典附加到一个新列表中 这样我就得到了一个字典列表 我正在尝试为此生成多个进程 我的问题是 我希望不同的进程访问由其他进程更新的字典列表 例如
  • 更改 Xamarin 中 ListView 所选项目的背景颜色

    我在 Xamarin 中创建了一个主从类型项目 当我从主页中选择一个项目时 背景颜色默认为橙色 我怎样才能将其更改为我选择的颜色 此问题是 Android 特有的 在 Android 项目中将此行添加到 Resources values s
  • MVVM ViewModel 与 MVC ViewModel

    ViewModel 是一个在 MVVM Model View ViewModel 和 ASP NET MVC 的推荐实现中使用的术语 鉴于每种模式都使用相同的术语 研究 ViewModel 可能会令人困惑 MVC ViewModel 和 M