0

我对ViewModel如何在KnockOut.js和Asp.Net MVC的上下文中工作感到困惑。在Asp.Net MVC的ViewModel vs Knockout.Js

在Asp.Net MVC中,ViewModels与DTO类似。他们习惯于拥有强类型的视图。这被认为是一种很好的做法,我也一直在研究。

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

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

+0

你是对的。 MVC中的逻辑是在控制器内部的,在这个上下文中的视图模型基本上是一个强类型的ViewBag或DTO,用于将数据传递给视图。在Knockout中,视图模型更像是一个典型的MVVM视图模型,更像是一个控制器,它暴露了数据绑定的可观察属性。 –

+0

Angular之类的ASP.NET MVC实现了MVC模式,而KO实现了MVVM模式。 – Anders

+0

@AnonyChu感谢您解决困惑。所以,无论何时使用MVVM模式,VM都类似于Controller?情况总是如此吗?就像在Windows应用程序开发等。 – harsimranb

回答

1

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

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