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「視圖模型」,更像是一個公開雙向數據綁定的可觀察屬性的控制器。