Hi All,

In this post, we will see how to do CRUD(Create/Read/update/Delete) operation with database in Asp.net MVC using AngularJs and Bootstrap.
Step 1: Create the Empty MVC application.
Step 2: Right click on project and Go to the “Manage Nuget Package” and Install the Angularjs like this

Step 3: Create the database in application and add the tblDept table like this

Step 4: Go to the Model folder and Add the EntityFramework Model and map the table like this

Step 5: Go to the Controller folder and Add the Empty Dept Controller and write the code for doing Insert/Update/Delete/Fetch functionality like this.
using AngularCRUD.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
namespace AngularCRUD.Controllers
{
public class DeptController : Controller
{
// GET: /Dept/
public ActionResult Index()
{
return View();
}
public JsonResult Get_AllDepts()
{
using (Database1Entities obj = new Database1Entities())
{
List<tblDept> objDept = obj.tblDepts.ToList();
return Json(objDept, JsonRequestBehavior.AllowGet);
}
}
public JsonResult Get_DeptById(string Id)
{
using (Database1Entities obj = new Database1Entities())
{
int DeptId = int.Parse(Id);
return Json(obj.tblDepts.Find(DeptId), JsonRequestBehavior.AllowGet);
}
}
public string Insert_Dept(tblDept dept)
{
if (dept != null)
{
using (Database1Entities obj = new Database1Entities())
{
obj.tblDepts.Add(dept);
obj.SaveChanges();
return "Dept details Added Successfully";
}
}
else
{
return "Dept Details Not Inserted! Try Again";
}
}
public string Update_Dept(tblDept Dept)
{
if (Dept != null)
{
using (Database1Entities Obj = new Database1Entities())
{
tblDept DeptObj = Obj.tblDepts.Find(Dept.Id);
////tblDept DeptObj = Obj.tblDepts.Where(x => x.Id == Dept.Id).FirstOrDefault();
DeptObj.DeptName = Dept.DeptName;
DeptObj.DeptDesc = Dept.DeptDesc;
Obj.SaveChanges();
return "Dept details Updated Successfully";
}
}
else
{
return "Dept Details Not Updated! Try Again";
}
}
public string Delete_Dept(tblDept dept)
{
if (dept != null)
{
using (Database1Entities obj = new Database1Entities())
{
//one approach to find the object Entity by Id
tblDept DeptObj = obj.tblDepts.Find(dept.Id);
//Other approach find the object entity by Id
// tblDept DeptObj = obj.tblDepts.Where(x => x.Id == dept.Id ).FirstOrDefault();
obj.tblDepts.Remove(DeptObj);
obj.SaveChanges();
return "Dept details deleted Successfully";
}
}
else
{
return "Dept Details Not Deleted! Try Again";
}
}
}
}
Step 6: Go to the Script folder and create Myscript folder and Add angularDept.js file write the code for calling Json action method from Controller like this
/// <reference path="../angular.min.js" />
var app = angular.module("DemoApp", []);
app.controller("DeptController", function ($scope, $http) {
$scope.InsertData = function () {
var action = document.getElementById("btnSave").getAttribute("value");
if (action == "Submit") {
debugger;
$scope.Dept = {};
$scope.Dept.DeptName = $scope.DeptName;
$scope.Dept.DeptDesc = $scope.DeptDesc;
$http({
method: "post",
url: "http://localhost:51374/Dept/Insert_Dept",
datatype: "json",
data: JSON.stringify($scope.Dept)
}).then(function (response) {
$scope.GetAllData();
$scope.DeptName = "";
$scope.DeptDesc = "";
}, function () {
alert("Error Occur");
});
}
else {
debugger;
$scope.Dept = {};
$scope.Dept.DeptName = $scope.DeptName;
$scope.Dept.DeptDesc = $scope.DeptDesc;
$scope.Dept.Id = document.getElementById("DeptID_").value;
console.log($scope.Dept.Id);
$http({
method: "post",
url: "http://localhost:51374/Dept/Update_Dept",
datatype: "json",
data: JSON.stringify($scope.Dept)
}).then(function (response) {
alert(response.data);
$scope.GetAllData();
$scope.DeptName = "";
$scope.DeptDesc = "";
document.getElementById("btnSave").setAttribute("value", "Submit");
document.getElementById("btnSave").style.backgroundColor = "cornflowerblue";
document.getElementById("spn").innerHTML = "Add New Dept Details";
}, function () {
alert("Error Occur");
})
}
}
//This is for fetching data from database.
$scope.GetAllData = function () {
debugger;
$http({
method: "get",
url: "http://localhost:51374/Dept/Get_AllDepts"
}).then(function (response) {
$scope.Depts = response.data;
console.log(response.data);
}, function () {
alert("Error Occur");
})
};
//This is for deleting the record.
$scope.DeleteDept = function (Dept) {
$http({
method: "post",
url: "http://localhost:51374/Dept/Delete_Dept",
datatype: "json",
data: JSON.stringify(Dept)
}).then(function (response) {
alert(response.data);
$scope.GetAllData();
}, function () {
alert("Error Occur");
})
};
//This is for selecting record on clicking particular record.
$scope.UpdateDept = function (Dept) {
debugger;
document.getElementById("DeptID_").value = Dept.Id;
$scope.DeptName = Dept.DeptName;
$scope.DeptDesc = Dept.DeptDesc;
document.getElementById("btnSave").setAttribute("value", "Update");
document.getElementById("btnSave").style.backgroundColor = "Yellow";
};
});
Step 7: Create the Empty View from Dept Controller and write the binding code like this
@{
ViewBag.Title = "Index";
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div>
<form data-ng-app="DemoApp" data-ng-controller="DeptController" ng-submit="InsertData()" data-ng-init="GetAllData()" name="myForm" novalidate >
<br />
<br />
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">Dept List</div>
<div class="panel-body">
<table cellpadding="12" class="table table-bordered table-hover">
<tr>
<td>
<b>ID</b>
</td>
<td>
<b>DeptName</b>
</td>
<td>
<b>Decscription</b>
</td>
<td>
<b>Actions</b>
</td>
</tr>
<tr data-ng-repeat="dept in Depts">
<td>{{dept.Id}}
</td>
<td>{{dept.DeptName}}
</td>
<td>{{dept.DeptDesc}}
</td>
<td>
<input type="button" class="btn btn-warning" value="Update" data-ng-click="UpdateDept(dept)" />
<input type="button" class="btn btn-danger" value="Delete" data-ng-click="DeleteDept(dept)" />
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">Dept Entry Screen</div>
<div class="panel-body">
<div class="form-horizontal" role="form">
<div class="container">
<div class="row">
<div class="col-sm-6 col-lg-4">
<div class="form-group">
<label class="col-md-4 control-label">Dept Name:</label>
<div class="col-md-8">
<input type="text" name="name" placeholder="Name" data-ng-model="DeptName" data-ng-required="true" >
<span ng-show="myForm.$submitted || myForm.name.$touched">
<span style="color:red" ng-show="myForm.name.$error.required">Name Required</span>
</span>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="form-group">
<label class="col-md-4 control-label">Dept Desc:</label>
<div class="col-md-8">
<input type="text" id="inputDeptDesc" required placeholder="Description" name="DeptDesc" data-ng-model="DeptDesc">
<span ng-show="myForm.$submitted || myForm.DeptDesc.$touched">
<span style="color:red" ng-show="myForm.DeptDesc.$error.required">Desc Required</span>
</span>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="form-group">
<div class="col-md-4 control-label"></div>
<div class="col-md-6">
<input type="submit" value="Submit" id="btnSave" class="btn btn-info" data-ng-disabled=" myForm.name.$invalid ||myForm.DeptDesc.$invalid " />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@Html.Hidden("DeptID_")
</div>
</div>
</form>
</div>
Step 8: Go to the BundleConfig.cs file and Include the Javascript Angular file like this

Step 9: Go to the _Layout.cshtml file and include the bundles file like this

Step 10: Now run the application, you will get the above output.