Introduction
In this post, I would like to explain Part 1 - How to setup AngularJS in MVC4 application.This is our First Post about AngularJS. Here I have explained a little about AngularJS and What we will learn in this section part by part. In this part (Part 1) I am going to explain how to setup AngularJS in MVC4 application.
Steps :
Step - 1 : Create New Project.
Go to File > New > Project > Select asp.net MVC4 web application > Entry Application Name > Click OK > Select Internet Application > Select view engine Razor > OKStep-2: Add AngularJS library to the project.
You can download AngularJS library files form here.Go to Solution Explorer > Right Click on Scripts folder > Add > Existing item > Select js files required for AngularJS > Add.
Step-3: Add a bundle for render AngularJS library files in the view.
Go to Solution Explorer > BundleConfig.cs from App_Start folder > add a bundle with writing the below code.bundles.Add(new ScriptBundle("~/bundles/angular").Include( "~/Scripts/angular.js", "~/Scripts/angular-route.js"));
Step-4: Modify _Layout.cshtml page for support AngularJS.
_Layout.cshtml<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") </head> @* Here ng-app="MyApp" is used for auto-bootstrap an AngularJS application. here ng-app="MyApp" means <body> element is the owner of AngularJS application*@ <body ng-app="MyApp"> @RenderBody() @Scripts.Render("~/bundles/jquery") @* Add Angular Library Here *@ @Scripts.Render("~/bundles/angular") <script src="~/Scripts/MyApp.js"></script> @RenderSection("scripts", required: false) </body> </html>
Step-5: Add a new js File for add angularjs module, controller etc.
Go to Solution Explorer > Right Click on Script folder > Add > Select Javascript file > Enter name > Add.Write following code in this file.
(function () { //Create a Module var app = angular.module('MyApp', ['ngRoute']); // Will use ['ng-Route'] when we will implement routing //Create a Controller app.controller('HomeController', function ($scope) { // here $scope is used for share data between view and controller $scope.Message = "Yahoooo! we have successfully done our first part."; }); })();
Here I have created an angular module and a controller with $scope object.
Step-6: Add a new Controller.
Go to Solution Explorer > Right Click on Controllers folder form Solution Explorer > Add > Controller > Enter Controller name > Select Templete "empty MVC Controller"> Add.Step-7: Add new action into your controller for Get View.
Here I have added "Index" Action into "Home" Controller. Please write this following codeusing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MVCWithAngularJs.Controllers { public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); } } }
Step-8: Add view for the Action & design.
Right Click on Action Method (here right click on form action) > Add View... > Enter View Name > Select View Engine (Razor) > Add.Complete View
@{ ViewBag.Title = "Index"; } <h2>Index</h2> <div ng-controller="HomeController"> {{Message}} </div>
The ng-controller directive defines which controller will be in charge of your view.
Here you can see I have specified the directive ng-controller="HomeController". This specifies what is the scope of the $scope object of AngularJS application.
<div ng-controller="HomeController"> {{Message}} </div>When a controller attached its create a new $scope object for the DOM element.