Knockout - это шаблон MVVM , который работает с JavaScript ViewModel. Причина, по которой это хорошо работает с MVC, заключается в том, что сериализация в и из моделей javascript в JSON очень проста.
Кроме того, он будет включен в MVC4. Вот видео создателя Knockout о том, как использовать его для одностраничных приложений в MVC4 (с новой функцией Microsoft Web API):
http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159
Но на самом деле выгода в том, что MVVM позволяет разрабатывать богатые пользовательские интерфейсы с гораздо меньшим количеством кода (если вы знакомы с Silverlight или WPF MVVM, вы поймете, что я имею в виду).
Учитывая ViewModel из:
var myViewModel = { myValue: 'some text' };
Вам не нужно связывать
$('#textBox').change(function() { myViewModel.myValue = $(this).val(); })
и наоборот
$('#textBox').val(myViewModel.myValue)
повсюду, или специальная обработка кода вычисляемых свойств в вашем представлении в Knockout. Вы можете сделать все это очень хорошим объектно-ориентированным способом.
<input type="text" data-bind="value: myValue" />
И все события подключены.