Getting Started with Knockout.js for .NET Developers
()
About this ebook
- Create complex cross-browser web applications the easy way
- Separate UI code from business logic with the Model View ViewModel () pattern
- Build a powerful client-side application step by step with Knockout MVC
This book is intended for .NET developers who want to use the design pattern to create powerful client-side JavaScript linked to server-side C# logic. Basic experience with ASP.NET, Razor, and creating web applications is needed.
Related to Getting Started with Knockout.js for .NET Developers
Related ebooks
Mastering ServiceStack Rating: 0 out of 5 stars0 ratingsMCTS: Microsoft Silverlight 4 Development (70-506) Certification Guide Rating: 0 out of 5 stars0 ratingsNode Web Development, Second Edition Rating: 0 out of 5 stars0 ratingsBuilding Web Services with Microsoft Azure Rating: 0 out of 5 stars0 ratingsGetting Started with Meteor.js JavaScript Framework - Second Edition Rating: 0 out of 5 stars0 ratingsASP.NET 3.5 Application Architecture and Design Rating: 0 out of 5 stars0 ratingsTypeScript Blueprints Rating: 0 out of 5 stars0 ratingsModern JavaScript Applications Rating: 0 out of 5 stars0 ratingsKnockoutJS Blueprints Rating: 0 out of 5 stars0 ratingsLearning Azure DocumentDB Rating: 0 out of 5 stars0 ratingsLearning Website Development with Django Rating: 0 out of 5 stars0 ratingsWindows Azure programming patterns for Start-ups Rating: 0 out of 5 stars0 ratingsLearning Microsoft Windows Server 2012 Dynamic Access Control Rating: 0 out of 5 stars0 ratingsCitrix XenApp Performance Essentials Rating: 0 out of 5 stars0 ratingsMastering Cloud Development using Microsoft Azure Rating: 0 out of 5 stars0 ratingsGetting Started with WebRTC Rating: 0 out of 5 stars0 ratingsLearning Docker Rating: 5 out of 5 stars5/5jQuery Design Patterns Rating: 0 out of 5 stars0 ratingsJavaScript Concurrency Rating: 0 out of 5 stars0 ratingsNode.js By Example Rating: 2 out of 5 stars2/5Learning .NET High-performance Programming Rating: 0 out of 5 stars0 ratingsImplementing Cloud Design Patterns for AWS Rating: 0 out of 5 stars0 ratingsSignalR – Real-time Application Development - Second Edition Rating: 0 out of 5 stars0 ratingsMastering Backbone.js Rating: 0 out of 5 stars0 ratingsLearning Docker - Second Edition Rating: 0 out of 5 stars0 ratingsBuilding Web Applications with Python and Neo4j Rating: 0 out of 5 stars0 ratingsBootstrap for ASP.NET MVC - Second Edition Rating: 5 out of 5 stars5/5Developing with Docker Rating: 5 out of 5 stars5/5Magento 2 Developer's Guide Rating: 0 out of 5 stars0 ratingsImplementing NetScaler VPX™ - Second Edition Rating: 0 out of 5 stars0 ratings
Programming For You
HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Python Projects for Beginners: A Ten-Week Bootcamp Approach to Python Programming Rating: 0 out of 5 stars0 ratingsLearn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 0 out of 5 stars0 ratingsJava for Beginners: A Crash Course to Learn Java Programming in 1 Week Rating: 5 out of 5 stars5/5The Unofficial Guide to Open Broadcaster Software: OBS: The World's Most Popular Free Live-Streaming Application Rating: 0 out of 5 stars0 ratingsPYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Hacking: Ultimate Beginner's Guide for Computer Hacking in 2018 and Beyond: Hacking in 2018, #1 Rating: 4 out of 5 stars4/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5The Little SAS Book: A Primer, Sixth Edition Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5SQL: For Beginners: Your Guide To Easily Learn SQL Programming in 7 Days Rating: 5 out of 5 stars5/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Teach Yourself C++ Rating: 4 out of 5 stars4/5Pokemon Go: Guide + 20 Tips and Tricks You Must Read Hints, Tricks, Tips, Secrets, Android, iOS Rating: 5 out of 5 stars5/5
Reviews for Getting Started with Knockout.js for .NET Developers
0 ratings0 reviews
Book preview
Getting Started with Knockout.js for .NET Developers - Andrey Akinshin
Table of Contents
Getting Started with Knockout.js for .NET Developers
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Introduction to Knockout.js
Knockout.js overview
What is Knockout.js?
The best features
MVVM design pattern
Installing Knockout.js
Method 1 – official site
Method 2 – NuGet
Method 3 – CDNs
Method 4 – GitHub
Knockout.js fundamentals
Creating a View
Adding a ViewModel
Adding a data binding
Adding an observable
Subscribing to observables
Updating View in a forced way
Delaying and suppressing change notifications
Adding dynamic behavior
A binding diversity
Single and multiple bindings
Value representation
White spaces
Skipping the value
Useful links
Summary
2. Creating a Simple Knockout.js Application
Creating the Model, View, and ViewModel
Text and appearance bindings
The text binding
The html binding
The css binding
The style binding
The attr binding
The visible binding
Form fields bindings
The value binding
The click binding
The submit binding
The event binding
The checked binding
The enable and disable binding
The options binding
The selectedOptions binding
Control flow bindings
The foreach binding
The if and ifnot bindings
The with binding
Computed observables
Using a computed observable
Computed observable features
Observable arrays
Using an observable array
Adding to an observable array
Removing from an observable array
Manipulating an observable array
Summary
3. Integrating Knockout.js in ASP.NET MVC Applications
Creating an application without Knockout.js
Creating a new project
Adding models
Adding views
Adding the Controller
Running the application
Creating an application with Knockout.js
Motivation
Creating a new project
Adding models
Adding views
Adding the controller
Running the application
Summary
4. Creating a Web Application with Knockout MVC
Getting started with Knockout MVC
Motivation
When you should use Knockout MVC
Installation
Useful links
Working with the Hello World example in Knockout MVC
Adding the model
Adding the controller
Adding the view
Running the application
Under the hood
Developing a Knockout MVC application
Adding the model
Adding the controller
Adding the view
Running the application
Under the hood
Summary
5. Advanced Features of Knockout.js
Loading and saving JSON data
Converting data to JSON
Converting JSON to data
Introducing Knockout mapping
A manual mapping example
An automatic mapping example
Mapping in Knockout MVC
Mapping unique values
Partial mapping – create
Partial mapping – update
Partial mapping – ignore
Multiple mappings
Advanced mapping
Binding context
Custom bindings
Registering a new binding
Binding callbacks' parameters
A custom binding example 1 – slideVisible
A custom binding example 2 – hasFocus
Extending observables
Creating an extender
An extending observables example 1 – numeric
An extending observables example 2 – required
Custom functions
An example with array filtering
Different templating approaches
A simple named template
Template in the foreach mode
The foreach template with alias
Choosing a template dynamically
Summary
6. Advanced Features of Knockout MVC
Regions
The foreach region
The with region
The if region
Complex bindings
Sending parameters to the server
Inner computed properties
Multiple view models
Lazy loading
Writing user scripts
Summary
A. A Brief on Knockout MVC References and Features
Working with KnockoutContext
Basic data binding
Form objects
Nested contexts
Sending requests to the server
Adding user-defined scripts
Forming a model and using computed properties
Special addressing forms
Summary
Index
Getting Started with Knockout.js for .NET Developers
Getting Started with Knockout.js for .NET Developers
Copyright © 2015 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: May 2015
Production reference: 1200515
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78398-400-8
www.packtpub.com
Credits
Author
Andrey Akinshin
Reviewers
Dmitry Pavlov
Tim Stuyckens
Commissioning Editor
Taron Pereira
Acquisition Editors
Owen Roberts
Greg Wild
Content Development Editors
Akshay Nair
Rohit Kumar Singh
Technical Editor
Taabish Khan
Copy Editor
Adithi Shetty
Project Coordinator
Mary Alex
Proofreaders
Safis Editing
Paul Hindle
Indexer
Priya Sane
Production Coordinator
Nitesh Thakur
Cover Work
Nitesh Thakur
About the Author
Andrey Akinshin has a PhD in computer science, and he received a Microsoft MVP award in 2015. He works as a lead .NET Developer at Perpetuum Software and as a postdoctoral research fellow at the Weizmann Institute of Science. He is also the author and main contributor of the Knockout MVC library and has a wealth of experience in Knockout.js. He has experience in various IT areas, from competitive programming (silver medal at ACM ICPC 2009) to teaching (senior lecturer and the school coach of competitive programming and mathematics teams).
You can find more information about Andrey on his home page, http://aakinshin.net.
About the Reviewers
Dmitry Pavlov is a 34-year-old IT guy from Saint Petersburg, Russia. He holds two degrees. His first alma mater was Saint Petersburg State University, where he graduated from the geological department with a master's degree. Then, he got interested in programming and decided to study computer science at Saint Petersburg Polytechnic State University, where he also got a master's degree. For more than 10 years, he has been involved in .NET programming at several software companies. He has held the Microsoft MVP (Visual C#) award since 2008. He has a keen interest in IT business, software development, technologies, and IT start-ups. For the last few years, he has been working as a freelance contractor and consultant, traveling with his family all over the world and enjoying his remote work.
Currently, he works as a remote ASP.NET MVC / .NET / C# developer for Toptal clients. In addition, he is a technical recruiter at Toptal (a global network of top freelance software developers).
Tim Stuyckens is a passionate web developer with several years of experience in JavaScript-heavy applications. He has been working with Knockout.js from the moment it became publicly available and since then, he has helped large .NET teams create dynamic websites. He currently works as a consultant for HR software, which is used by more than 100,000 users.
His most known open source work is the Chrome Knockout.js context debugger extension, which has more than 25,000 weekly users.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Preface
Development of a big web application is a hard task. Because of this, people try to use different useful and flexible approaches to build the architecture of their applications. One such approach is Knockout.js. It is a JavaScript library that provides you with a sophisticated way to communicate between your UI and the underlying data model to create rich web user interfaces based on the Model-View-ViewModel (MVVM) pattern. Knockout.js provides a simple two-way data binding mechanism between your data model and UI, which means that any change to your data model is automatically reflected in the UI and vice versa. Instead of using pure Knockout.js, you can use Knockout MVC. It is a library for ASP.NET MVC, which is a wrapper for Knockout.js that helps to move the entire business logic to the server side; the complete JavaScript code necessary on the client side will be generated.
This book will provide you with the skills you need to successfully create a Knockout.js-based application of varying complexity, from a simple Knockout.js web page in pure JavaScript to a complex ASP.NET web application. You will learn how you can use the MVVM design pattern, including the dependency tracking system and observable properties for creation of powerful sites with a clear separation of model, logic, and view layers.
What this book covers
Chapter 1, Introduction to Knockout.js, teaches basic Knockout.js concepts (overview), such as MVVM design pattern (including the creation of Model, ViewModel, and View), binding, observables, and subscribe machinery. Also, we'll consider an installation process for the library.
Chapter 2, Creating a Simple Knockout.js Application, covers how to use advanced Knockout.js features, such as working with observables arrays, special bindings, and computed observables.
Chapter 3, Integrating Knockout.js in ASP.NET MVC Applications, uses our Knockout.js experience to create a simple ASP.NET MVC application. We'll create a simple application in pure Knockout.js + ASP.NET MVC without external libraries. We'll cover how to create a Model in C# and connect it with the MVVM structure in JavaScript.
Chapter 4, Creating a Web Application with Knockout MVC, discusses how to move the entire business logic to the server side; the complete JavaScript code necessary on the client side will be generated automatically based on the described C# (or VB.NET) model.
Chapter 5, Advanced Features of Knockout.js, covers how to use advanced Knockout MVC features. The basic set will be enough for a very simple application. Any real application needs special concepts, such as regions, complex bindings, combined contexts, and so on. You may need to transfer some parameters to the server, write your own user scripts, or perform lazy loading of your data in the case of big data.
Chapter 6, Advanced Features of Knockout MVC, discusses how to use advanced Knockout MVC features. The basic set will be enough for a very simple application. Any real application needs special concepts, such as regions, complex bindings, combined contexts, and so on. You may need to transfer some parameters to the server, write your own user scripts, or make lazy loading of your data in the big data case.
Appendix, A Brief