Using Knockout in MVC Application

This article shows how to bind static data using Knockout in a MVC Application.

Introduction

This article explains how to use Knockout in a MVC Application.

Knockout comes with the great advantage that it can be used with any server-side or client-side technology, it has no problem with any type of server-side or even client-side technology. It's compatible with all types of technologies. In this article I will tell you how to use Knockout to create a MVC Application. This is my first article about MVC and Knockout so here I'll show you how to bind static data using Knockout in a MVC Application.

Let's see the procedure required to create such an application.

Step 1

First of all you need to add a class in the Model Folder. This can be done by right-clicking on the Model Folder and then choosing "Add New Class".

knockout mvc1.jpg

Now you need to declare three variables in the class to be used in our application.

using DelegateDecompiler;

using System.Linq;

using System.ComponentModel;

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

 

namespace MvcApplication20.Models

{

    public class Class1

    {

       

        public string Buyer { get; set; }

        public string Car { get; set; }

        public string Price { get; set; }

 

    }

}

Here I had declared the three variables named Buyer, Car and Price.

Step 2

Now we will pass the value for these Variables. For this you need to add a Controller Class to the Controllers Folder, right-click on the Controllers Folder and choose "Add a New Controller Class".

knockout mvc2.jpg

Now in this Controller Class we will pass the value for the variables that we declared in the Model Class.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using MvcApplication20.Models;

using PerpetuumSoft.Knockout;

 

namespace MvcApplication20.Controllers

{

    public class HomeController : Controller

    {

        [HttpGet]

        public ActionResult Index()

        {

            Class1 buyer = new Class1();

            buyer.Buyer = "Anubhav";

            buyer.Car = "Verna";

            buyer.Price = "12 lakhs";

            return View(buyer);

        }

 

    }

}

Here in the HttpGet Class I had provided the name of the View File with the Action result, then under it I had created an object of Class1 that is Model Class.

After that I had provided the values for the variables that were declared in the Model Class.

Step 3

One major step is still remaining, it is adding the Nuget's for Knockout. For this right-click on the "References" and choose to "Manage Nuget Packages".

knockout mvc3.jpg

Now in the Nuget Console search for Knockout and then click on the download.

You also need to add a Knockout file to you application, for that you can download my Zip File and then add all the files that I have provided in the Zip Folder to your Application like "Knockout-2.1.0.js" and "knockout.mapping.latest.js"

Step 4

Now we will work on the design of our application, in other words on the View of our application. Right-click on the View Folder and add a New View Class to this View Folder.

knockout mvc4.jpg

In this class you need to write the following code: 

@using System.Web.Script.Serialization;

@model MvcApplication20.Models.Class1  

@{

    ViewBag.Title = "Index";

    Layout = "~/Views/ViewPage1.cshtml";

}

<h2>Car Purchaser</h2>

<script src="~/Scripts/knockout-2.1.0.js"></script>

<script src="~/Scripts/knockout.mapping-latest.js"></script>

<p>Buyer Name:<strong data-bind="text:Buyer"></strong></p>

<p>Car Name:<strong data-bind="text:Car"></strong></p>

<p>Price:<strong data-bind="text:Price"></strong></p>

<script type="text/javascript">

     $(function()

     {

        

         var model = @Html.Raw(Json.Encode(Model))       

            ko.applyBindings(model);

   });

    </script> 

As you can see, in this class I provided the path for the two Knockout Files that will be used for binding the data and for mapping.

After that I took three Spans and with these Spans bound the value of Buyer, Car and Price.

At the end I created a function in which I provided the binding between the Model and the View of this application.

You must be thinking, why did I take the ViewBag, Title and Layout at the start of this code. So I had created a new View Class named ViewPage1 and in this View Class I provided all the remaining files that can be added to use the Knockout in an application.

You will see it by downloading the application.

Output

Now let's have a look at the Output Window. Debug you application to see the output.

knockout mvc5.jpg

As you can see, it's showing the output as static data, if you want to cerate dynamic output then you will see that in my future articles.