【发布时间】: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