Chapter 7. Server-Side ViewModels

Chapter 3 introduced client-side ViewModels that are used to perform data bindings with Knockout. I would consider them identical in purpose, but they live at a different level in the lifecycle of a web request.

A server-side ViewModel is generated from a data model. The ViewModel is then bound to a view. In Chapter 5 and Chapter 6 when the AuthorsController was scaffolded from the Author model, the Author model is also being used as a ViewModel for the various views in the CRUD operation.

In Chapter 6, client-side ViewModels were created that accepted the ViewModel from the Razor view (the data model), and they were bound to the view via Knockout. The major difference between client-side and server-side ViewModels is that server-side ViewModels are static. Once the web request has been returned from the server to the client, the server-side ViewModel will never change, whereas the client-side ViewModel is dynamic and responds to user interactions on the web page.

Why Create Server-Side ViewModels?

This is  an important question. As you will see very soon, when I create an Authors ViewModel, it will be nearly identical to the Authors model, so why should we create them?

In Chapter 5, when the AuthorsController was first scaffolded from the Author model, the list of authors was serialized to JSON and provided to the client-side ViewModel. If you view the source of the authors index page, you will notice the list of books for each author was also ...

Get ASP.NET MVC 5 with Bootstrap and Knockout.js now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.