Web Api is light weight Technology to build RESTfull Web Services.
Web Api is framework to build HTTP services that can be consumed by various clients.
To perform CRUD Operations, We will use some HTTP verbs, which is listed below.
- GET : It is used for Get data.
- POST : It is used to create a new resource.
- PUT : It is used to update the existing resource.
- DELETE : It is used to Delete the resources.
Now Let’s Create MVC application.
File => New => Project
Select Asp.Net MVC4 Application, Click OK.
A pop up window will open, Select Web Api from there.
Add the following two class to model folder.
01
02
03
04
05
06
07
08
09
10
| namespace StartWebApi.Models { public class Employee { public int Id { get ; set ; } public string Name { get ; set ; } public string Email { get ; set ; } public int Age { get ; set ; } } } |
01
02
03
04
05
06
07
08
09
10
| using System.Data.Entity; namespace StartWebApi.Models { public class DemoContext : DbContext { public DbSet<Employee> employee { get ; set ; } } } |
Now Create a Api Controller. Name it as
HomeApi
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
| using StartWebApi.Models; using System.Collections.Generic; using System.Linq; using System.Web.Http; using System.Web.Http.Description; namespace StartWebApi.Controllers { public class HomeApiController : ApiController { public IEnumerable<Employee> GetAll() { using (DemoContext objDemoContext = new DemoContext()) { return objDemoContext.employee.ToList(); } } public IHttpActionResult Get( int Id) { using (DemoContext objDemoContext = new DemoContext()) { var employee = objDemoContext.employee.FirstOrDefault(a => a.Id == Id); if (employee != null ) { return Ok(employee); } else { return NotFound(); } } } [ResponseType( typeof (Employee))] public IHttpActionResult Post(Employee employee) { using (DemoContext objDemoContext= new DemoContext()) { objDemoContext.employee.Add(employee); objDemoContext.SaveChanges(); } return CreatedAtRoute( "DefaultApi" , new { Id = employee.Id }, employee); } [ResponseType( typeof (Employee))] public IHttpActionResult Delete( int Id) { using (DemoContext objDemoContext = new DemoContext()) { var GetEmployee = objDemoContext.employee.FirstOrDefault(a => a.Id == Id); if (GetEmployee != null ) { objDemoContext.employee.Remove(GetEmployee); objDemoContext.SaveChanges(); return Ok(); } else { return NotFound(); } } } [ResponseType( typeof (Employee))] public IHttpActionResult Put( int Id,Employee employee) { if (Id != employee.Id) { return BadRequest(); } else { using (DemoContext contextObj = new DemoContext()) { Employee GetEmployee = contextObj.employee.Find(Id); GetEmployee.Name = employee.Name; GetEmployee.Email = employee.Email; GetEmployee.Age = employee.Age; contextObj.SaveChanges(); return CreatedAtRoute( "DefaultApi" , new { Id = employee.Id }, employee); } } } } } |
Now create a Home Controller.
01
02
03
04
05
06
07
08
09
10
11
12
| using System.Web.Mvc; namespace StartWebApi.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } } } |
Now Install AngularJs in your Project.
Write down following code in Index.cshtml.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| < div id = "body" > < div ng-controller = "myCntrl" class = "divList" > < span ng-click = "AddEmployeeDiv()" class = "btnGreen" > Add Employee </ span > < div class = "divList" > < p class = "divHead" >Employee List</ p > < table cellpadding = "12" > < tr > < td >< b >ID</ b ></ td > < td >< b >Name</ b ></ td > < td >< b >Email</ b ></ td > < td >< b >Age</ b ></ td > < td >< b >Actions</ b ></ td > </ tr > < tr ng-repeat = "employee in employees" > < td > {{employee.Id}} </ td > < td > {{employee.Name}} </ td > < td > {{employee.Email}} </ td > < td > {{employee.Age}} </ td > < td > < span ng-click = "editEmployee(employee)" class = "btnGreen" >Edit</ span > < span ng-click = "deleteEmployee(employee)" class = "btnRed" >Delete</ span > </ td > </ tr > </ table > </ div > < div ng-show = "divEmployee" > < p class = "divHead" >{{Action}} Employee</ p > < table > < tr > < td >< b >Id</ b ></ td > < td > < input type = "text" disabled = "disabled" ng-model = "employeeId" /> </ td > </ tr > < tr > < td >< b >Name</ b ></ td > < td > < input type = "text" ng-model = "employeeName" /> </ td > </ tr > < tr > < td >< b >Email</ b ></ td > < td > < input type = "text" ng-model = "employeeEmail" /> </ td > </ tr > < tr > < td >< b >Age</ b ></ td > < td > < input type = "text" ng-model = "employeeAge" /> </ td > </ tr > < tr > < td colspan = "2" > < input type = "button" class = "btnGreen" value = "Save" ng-click = "AddUpdateEmployee()" /> </ td > </ tr > </ table > </ div > </ div > </ div > |
Create a folder inside content folder. name it as Angular.
Add three Js file to it.
Module.js
1
| var app = angular.module( "myApp" ,[]); |
We will write code in service.Js file to Interact with Web Api to perform CRUD Operations.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| app.service( "angularService" , function ($http) { //get All Eployee this .getEmployees = function () { return $http.get( "/api/HomeApi" ); }; // get Employee By Id this .getEmployee = function (employeeID) { return response = $http.get( "/api/HomeApi/" + employeeID); } // Update Employee this .updateEmp = function (employeeID, employee) { var response = $http({ method: "put" , url: "/api/HomeApi/" +employeeID, data: JSON.stringify(employee), dataType: "json" }); return response; } // Add Employee this .AddEmp = function (employee) { var response = $http({ method: "post" , url: "/api/HomeApi" , data: JSON.stringify(employee), dataType: "json" }); return response; } //Delete Employee this .DeleteEmp = function (employeeId) { var response = $http({ method: "delete" , url: "/api/HomeApi/" + employeeId }); return response; } }); |
- $http.get (url) : It will send HTTP get request.
- $http.post (url, data) : It will send HTTP post request.
- $http.put (url,data) : It will send HTTP put request.
- $http.delete (url) : It will send HTTP delete request.
Controller.js :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
| app.controller( "myCntrl" , function ($scope, angularService) { $scope.divEmployee = false ; GetAllEmployee(); //To Get All Records function GetAllEmployee() { var getData = angularService.getEmployees(); getData.then( function (emp) { $scope.employees = emp.data; }, function () { alert( 'Error in getting records' ); }); } $scope.editEmployee = function (employee) { var getData = angularService.getEmployee(employee.Id); getData.then( function (emp) { $scope.employee = emp.data; $scope.employeeId = employee.Id; $scope.employeeName = employee.Name; $scope.employeeEmail = employee.Email; $scope.employeeAge = employee.Age; $scope.Action = "Update" ; $scope.divEmployee = true ; }, function () { alert( 'Error in getting record' ); }); } $scope.AddUpdateEmployee = function () { var Employee = { Name: $scope.employeeName, Email: $scope.employeeEmail, Age: $scope.employeeAge }; var getAction = $scope.Action; if (getAction == "Update" ) { Employee.Id = $scope.employeeId; var getData = angularService.updateEmp($scope.employeeId,Employee); getData.then( function (msg) { GetAllEmployee(); alert( "Employee Id :- " +msg.data.Id+ " is Updated" ); $scope.divEmployee = false ; }, function () { alert( 'Error in updating record' ); }); } else { var getData = angularService.AddEmp(Employee); getData.then( function (msg) { GetAllEmployee(); alert( "Employee Name :- " +msg.data.Name+ " is Added" ); $scope.divEmployee = false ; }, function () { alert( 'Error in adding record' ); }); } } $scope.AddEmployeeDiv= function () { ClearFields(); $scope.Action = "Add" ; $scope.divEmployee = true ; } $scope.deleteEmployee = function (employee) { var getData = angularService.DeleteEmp(employee.Id); getData.then( function (msg) { GetAllEmployee(); alert( 'Employee Deleted' ); }, function (){ alert( 'Error in Deleting Record' ); }); } function ClearFields() { $scope.employeeId = "" ; $scope.employeeName = "" ; $scope.employeeEmail = "" ; $scope.employeeAge = "" ; } }); |
1
2
3
| < connectionStrings > < add name = "DemoContext" providerName = "System.Data.SqlClient" connectionString = "Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-StartWebApi-20141228192300;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-StartWebApi-20141228192300.mdf" /> </ connectionStrings > |
_Layout.cshtml
Include AngularJs file inside head tag.
1
2
3
4
| <script src= "~/Scripts/angular.js" ></script> <script src= "~/Content/Angular/Module.js" ></script> <script src= "~/Content/Angular/Service.js" ></script> <script src= "~/Content/Angular/Controller.js" ></script> |
See the Previous Article, To know more about AngularJs Directives
We have done the CRUD Operations in MVC using Web Api and AngularJS.
DEMO
DOWNLOAD CODE