【问题标题】:ViewModel in Asp.Net MVC vs Knockout.Js [closed]Asp.Net MVC 与 Knockout.Js 中的 ViewModel [关闭]
【发布时间】:2014-02-19 17:24:06
【问题描述】:

我真的很困惑 ViewModel 如何在 KnockOut.js 和 Asp.Net MVC 的上下文中工作。

在 Asp.Net MVC 中,ViewModel 类似于 DTO。它们用于具有强类型视图。这被认为是一种很好的做法,我也一直在遵守。

不过,最近我对 Knockout.js 产生了兴趣,它以完全不同的方式使用 ViewModel。我仍然不能 100% 确定,但 ViewModel 看起来就像是控制器。

我想我仍然对 knockout.js 中的 ViewModel 感到困惑,因为它与 Asp.Net MVC 不同。你能帮忙澄清这两种模式吗?

【问题讨论】:

  • 你是对的。 MVC 中的逻辑在控制器内部,在此上下文中的视图模型基本上是用于将数据传递给视图的强类型 ViewBag 或 DTO。在 Knockout 中,视图模型更像是典型的 MVVM 视图模型,它更像是为数据绑定公开可观察属性的控制器。
  • ASP.NET MVC like Angular 实现了 MVC 模式,而 KO 实现了 MVVM 模式。
  • @AnthonyChu 感谢您消除困惑。那么,无论何时使用 MVVM 模式,VM 都类似于 Controller?总是这样吗?比如windows应用开发等等。
  • @Anders Yah,Angular JS 在这种情况下更有意义。 KO 不像 Angular JS 那样是一个成熟的框架,但对我来说,它与 Asp.Net MVC 完美结合,实现了丰富的客户端体验,并且不会带来太多的复杂性。就像 MVC 中缺少的部分一样,它启用了动态 ui。
  • @Pathachiever11 是的,XAML 堆栈 (WPF/Silverlight/WinPhone/Win8) 上的视图模型往往包含逻辑。事实上,这就是 MVVM 最开始流行的地方。

标签: asp.net-mvc design-patterns model-view-controller mvvm knockout.js


【解决方案1】:

你是对的。 MVC 中的逻辑在控制器内部,在此上下文中的视图模型基本上是一个强类型的 ViewBag 或 DTO,用于将数据传递给视图以进行单向数据绑定。

在 Knockout 和 XAML 堆栈上的任何东西中,视图模型更像是一个典型的 MVVM“视图模型”,它更像是一个控制器,它为双向数据绑定公开可观察的属性。

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2011-02-04
    • 2012-11-13
    • 2013-02-15
    • 2011-05-02
    • 2012-07-06
    相关资源
    最近更新 更多