Full CRUD operation using datatables in ASP.NET MVC

In the previous article of this series "Implementing jQuery Datatables in ASP.NET MVC application", we have seen followings.
  • Implement jQuery Datatable in ASP.NET MVC application
  • jQuery Datatable server side pagination and sorting in ASP.NET MVC
  • Implement custom multicolumn server-side filtering in jQuery dataTables

Where we have used Datatables plugin to basically display data with various features.
Because a lot of requests from readers to me to write a tutorial for implement CRUD operation in Datatables, today I am going to show you how we can implement CRUD operation in Datatables. 
Add New Employee
First Name Last Name Email ID City Country Edit Delete
Full CRUD operation using datatables in ASP.NET MVC
    Layout = null;
<!DOCTYPE html>
    <meta name="viewport" content="width=device-width" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css" />
    <link href="~/Content/themes/base/jquery-ui.min.css" rel="stylesheet" />
        span.field-validation-error {
            color: red;
    <div style="width:90%; margin:0 auto" class="tablecontainer"> 
        <a class="popup btn btn-primary" href="/home/save/0" style="margin-bottom:20px; margin-top:20px;">Add New Employee</a>
        <table id="myDatatable">
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Email ID</th>

    <script src="~/Scripts/jquery-3.1.1.min.js"></script>
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
    <script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>

        $(document).ready(function () {
            var oTable = $('#myDatatable').DataTable({
                "ajax": {
                    "url" : '/home/GetEmployees',
                    "type" : "get",
                    "datatype" : "json"
                "columns": [
                    { "data": "FirstName", "autoWidth": true },
                    { "data" : "LastName", "autoWidth" : true},
                    { "data": "EmailID", "autoWidth": true },
                    { "data": "City", "autoWidth": true },
                    { "data": "Country", "autoWidth": true },
                        "data": "EmployeeID", "width": "50px", "render": function (data) {
                            return '<a class="popup" href="/home/save/'+data+'">Edit</a>';
                        "data": "EmployeeID", "width": "50px", "render": function (data) {
                            return '<a class="popup" href="/home/delete/' + data + '">Delete</a>';
            $('.tablecontainer').on('click', 'a.popup', function (e) {
            function OpenPopup(pageUrl) {
                var $pageContent = $('<div/>');
                $pageContent.load(pageUrl, function () {
                    $('#popupForm', $pageContent).removeData('validator');
                    $('#popupForm', $pageContent).removeData('unobtrusiveValidation');


                $dialog = $('<div class="popupWindow" style="overflow:auto"></div>')
                              draggable : false,
                              autoOpen : false,
                              resizable : false,
                              model : true,
                              title:'Popup Dialog',
                              height : 550,
                              width : 600,
                              close: function () {

                $('.popupWindow').on('submit', '#popupForm', function (e) {
                    var url = $('#popupForm')[0].action;
                        type : "POST",
                        url : url,
                        data: $('#popupForm').serialize(),
                        success: function (data) {
                            if (data.status) {


Posted By :