Models :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using
System.ComponentModel.DataAnnotations;
namespace WebApplication1.Models
{
    public class COUNTRY
    {
        [Key]
        public
int CID { get; set; }
       
[MaxLength(50)]
        public
string CNAME { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using
System.ComponentModel.DataAnnotations;
namespace WebApplication1.Models
{
    public class STATE
    {
        [Key]
        public
int SID { get; set; }
       
[MaxLength(50)]
        public
string SNAME { get; set; }
        public
int CID { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using
System.ComponentModel.DataAnnotations;
namespace WebApplication1.Models
{
    public class HOBBY
    {
        [Key]
        public
int HID { get; set; }
        public
string DNAME { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using
System.ComponentModel.DataAnnotations;
namespace WebApplication1.Models
{
    public class HMAP
    {
        [Key]
        public
int ID { get; set; }
        public
int CID { get; set; }
        public
int HID { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using
System.ComponentModel.DataAnnotations;
namespace WebApplication1.Models
{
    public class INTEREST
    {
        [Key]
        public
int IID { get; set; }
        public
string INAME { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace WebApplication1.Models
{
    public class IMAP
    {
        [Key]
        public
int ID { get; set; }
        public
int CID { get; set; }
        public
int IID { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using
System.ComponentModel.DataAnnotations;
using
System.ComponentModel.DataAnnotations.Schema;
namespace WebApplication1.Models
{
    public class CUSTOMER
    {
        [Key,
DatabaseGenerated(DatabaseGeneratedOption.None)]
        public
int EID { get; set; }
       
[MaxLength(50)]
        public
string NAME { get; set; }
        public
string ADDRESS { get; set; }
       
[MaxLength(50)]
        public
string PASSWORD { get; set; }
       
[MaxLength(50)]
        public
string GENDER { get; set; }
       
[MaxLength(50)]
        public
string EMAIL { get; set; }
        public
decimal SALARY { get; set; }
        public
DateTime DOJ { get; set; }
        public string
PATH { get; set; }
        public
int CID { get; set; }
        public
int SID { get; set; }
    }
}
View Model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using
System.ComponentModel.DataAnnotations;
using
Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace WebApplication1.Models
{
    public class
CUSTOMERVM
    {
        public
CUSTOMERVM()
        {
         
  HOBBY = new List<SelectListItem>();
         
  LCID = new List<SelectListItem>();
         
  LSID = new List<SelectListItem>();
         
  INTEREST = new List<string>();
         
  LINTEREST = new List<SelectListItem>();
        }
       
[Required(ErrorMessage = "Eid should not be blank.")]
        public
int? EID { get; set; }
       
[Required(ErrorMessage ="Name should not be blank.")]
        public
string NAME { get; set; }
       
[Required(ErrorMessage = "Address should not be blank.")]
       
[DataType(DataType.MultilineText)]
        public
string ADDRESS { get; set; }
       
[Required(ErrorMessage = "Password should not be blank.")]
       
[StringLength(8,MinimumLength =6,ErrorMessage ="Password length between 6
to 8 charecters long.")]
       
[DataType(DataType.Password)]
        public
string PASSWORD { get; set; }
       
[DataType(DataType.Password)]
       
[Display(Name ="CONFIRM PASSWORD")]
       
[Required(ErrorMessage = "Confirm password should not be blank.")]
       
[Compare("PASSWORD",ErrorMessage ="Password and confirm password
must be same.")]
        public
string CPASSWORD { get; set; }
       
[Required(ErrorMessage = "Please select a gender.")]
        public
string GENDER { get; set; }
       
[Required(ErrorMessage = "Email should not be blank.")]
       
[Remote("Check","Custom",ErrorMessage = "This mail id
is already exists")]
       
[RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",
ErrorMessage ="Invalid email id.")]
        public
string EMAIL { get; set; }
       
[Required(ErrorMessage = "Salary should not be blank.")]
       
[Range(5000,500000,ErrorMessage ="Salary range between 5000 to
500000.")]
        public
decimal SALARY { get; set; }
       
[Required(ErrorMessage = "Doj should not be blank.")]
        public
DateTime DOJ { get; set; }
       
[Cheboxsvalidation(ErrorMessage ="Please select a hobby.")]
        public
List<SelectListItem> HOBBY { get; set; }
        [Required(ErrorMessage
= "Please select a country.")]
       
[Display(Name ="COUNTRY")]
        public
int CID { get; set; }
        public
List<SelectListItem> LCID { get; set; }
       
[Required(ErrorMessage = "Please select a state.")]
        public
int SID { get; set; }
        public
List<SelectListItem> LSID { get; set; }
       
[Listboxvalidation(ErrorMessage = "Please select a interest.")]
        public
List<string> INTEREST { get; set; }
        public
List<SelectListItem> LINTEREST { get; set; }
        public
string PATH { get; set; }
       
[Required(ErrorMessage = "Please select a photo.")]
        public
IFormFile PHOTO { get; set; }
    }
    public class
Cheboxsvalidation:ValidationAttribute
    {
        public
override bool IsValid(object value)
        {
         
  if (value == null)
         
      return false;
         
  else
         
      return ((List<SelectListItem>)value).Count(m =>
m.Selected) > 0;
        }
    }
    public class
Listboxvalidation:ValidationAttribute
    {
        public
override bool IsValid(object value)
        {
         
  if (value == null)
         
      return false;
         
  else
         
      return ((List<string>)value).Count > 0;
        }
    }
}
Repository :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace WebApplication1.Models
{
    public class
Repository<T> : IRepository<T> where T : class
    {
        private
readonly AppDbContext context;
        public
Repository(AppDbContext Context)
        {
         
  this.context = Context;
        }
        public
async Task Delete(int id)
        {
         
  var data = await Get(id);
         
  context.Set<T>().Remove(data);
         
  await context.SaveChangesAsync();
        }
        public
async Task Multipledelete(List<T> t)
        {
         
  context.Set<T>().RemoveRange(t);
         
 await context.SaveChangesAsync();
        }
        public
async Task<T> Get(int id)
        {
         
  return await context.Set<T>().FindAsync(id);
        }
       
public  IQueryable<T> Gets()
        {
         
  return  context.Set<T>().AsNoTracking();
        }
        public
async Task Multiplesave(List<T> t)
        {
         
  await context.Set<T>().AddRangeAsync(t);
         
  await context.SaveChangesAsync();
        }
        public
async Task Save(T t)
        {
         
  await context.Set<T>().AddAsync(t);
         
  await context.SaveChangesAsync();
        }
        public
async Task Update(T t)
        {
         
  context.Set<T>().Update(t);
         
  await context.SaveChangesAsync();
        }
    }
}
Implement Repository :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace WebApplication1.Models
{
    public class
Repository<T> : IRepository<T> where T : class
    {
        private
readonly AppDbContext context;
        public
Repository(AppDbContext Context)
        {
         
  this.context = Context;
        }
        public
async Task Delete(int id)
        {
         
  var data = await Get(id);
         
  context.Set<T>().Remove(data);
         
  await context.SaveChangesAsync();
        }
        public
async Task Multipledelete(List<T> t)
        {
         
  context.Set<T>().RemoveRange(t);
         
 await context.SaveChangesAsync();
        }
        public
async Task<T> Get(int id)
        {
         
  return await context.Set<T>().FindAsync(id);
        }
       
public  IQueryable<T> Gets()
        {
         
  return  context.Set<T>().AsNoTracking();
        }
        public
async Task Multiplesave(List<T> t)
        {
         
  await context.Set<T>().AddRangeAsync(t);
         
  await context.SaveChangesAsync();
        }
        public
async Task Save(T t)
        {
         
  await context.Set<T>().AddAsync(t);
         
  await context.SaveChangesAsync();
        }
        public
async Task Update(T t)
        {
         
  context.Set<T>().Update(t);
         
  await context.SaveChangesAsync();
        }
    }
}
DbContext :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace WebApplication1.Models
{
    public class
AppDbContext : DbContext
    {
        public
AppDbContext(DbContextOptions<AppDbContext> options):base(options)
        { }
        public
DbSet<COUNTRY> COUNTRIEs { get; set; }
        public
DbSet<STATE> STATEs { get; set; }
        public
DbSet<HOBBY> HOBBY { get; set; }
        public
DbSet<HMAP> HMAP { get; set; }
        public
DbSet<INTEREST> INTEREST { get; set; }
        public
DbSet<IMAP> IMAP { get; set; }
        public
DbSet<CUSTOMER> CUSTOMER { get; set; }
    }
}
Add connection string in
appsettings.json :
{
  "Logging": {
    "LogLevel":
{
     
"Default": "Warning"
    }
  },
  "AllowedHosts":
"*",
 
"ConnectionStrings": {
   
"DBConnection":
"server=(localdb)\\MSSQLLocalDB;database=SIVDB;Trusted_Connection=true;MultipleActiveResultSets=True"
  }
}
Register Dependency Injection in
dependency  container Startup.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using
Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using
Microsoft.Extensions.Configuration;
using
Microsoft.Extensions.DependencyInjection;
using WebApplication1.Models;
namespace WebApplication1
{
    public class Startup
    {
        public
Startup(IConfiguration configuration)
        {
         
  Configuration = configuration;
        }
        public
IConfiguration Configuration { get; }
        // This
method gets called by the runtime. Use this method to add services to the
container.
        public
void ConfigureServices(IServiceCollection services)
        {
         
  services.Configure<CookiePolicyOptions>(options =>
         
  {
         
      // This lambda determines whether user consent for
non-essential cookies is needed for a given request.
         
      options.CheckConsentNeeded = context => true;
         
      options.MinimumSameSitePolicy = SameSiteMode.None;
         
  });
         
  services.AddMvc();
         
  //services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
       
   
services.AddDbContextPool<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DBConnection")));
     
      services.AddDbContext<AppDbContext>();
     
      services.AddScoped<IRepository<COUNTRY>,
Repository<COUNTRY>>();
     
      services.AddScoped<IRepository<STATE>,
Repository<STATE>>();
     
      services.AddScoped<IRepository<CUSTOMER>,
Repository<CUSTOMER>>();
     
      services.AddScoped<IRepository<HOBBY>,
Repository<HOBBY>>();
     
      services.AddScoped<IRepository<HMAP>,
Repository<HMAP>>();
     
      services.AddScoped<IRepository<INTEREST>,
Repository<INTEREST>>();
     
      services.AddScoped<IRepository<IMAP>,
Repository<IMAP>>();
        }
        // This
method gets called by the runtime. Use this method to configure the HTTP
request pipeline.
        public
void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
         
  if (env.IsDevelopment())
         
  {
         
      app.UseDeveloperExceptionPage();
         
  }
         
  else
         
  {
         
      app.UseExceptionHandler("/Home/Error");
         
      app.UseHsts();
         
  }
         
  app.UseHttpsRedirection();
         
  app.UseStaticFiles();
         
  app.UseCookiePolicy();
         
  app.UseMvc(routes =>
         
  {
         
      routes.MapRoute(
         
          name: "default",
         
          template:
"{controller=Custom}/{action=Index}/{id?}");
         
  });
        }
    }
}
Use 2 commands for migration :
Add-Migration Intialmigraion
Update-Database
Controller :
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using WebApplication1.Models;
using
Microsoft.AspNetCore.Mvc.Rendering;
using System.IO;
using Microsoft.AspNetCore.Hosting;
namespace
WebApplication1.Controllers
{
    public class
CustomController : Controller
    {
        #region
        private
readonly IRepository<CUSTOMER> rCUSTOMER;
        private
readonly IRepository<COUNTRY> rCOUNTRY;
        private
readonly IRepository<STATE> rSTATE;
        private
readonly IRepository<HOBBY> rHOBBY;
        private
readonly IRepository<HMAP> rHMAP;
        private
readonly IRepository<INTEREST> rINTEREST;
        private
readonly IRepository<IMAP> rIMAP;
        private
readonly IHostingEnvironment hostingEnvironment;
       
#endregion
        public
CustomController(IRepository<CUSTOMER> RCUSTOMER, 
         
  IRepository<COUNTRY> RCOUNTRY, 
         
  IRepository<STATE> RSTATE,
         
  IRepository<HOBBY> RHOBBY,
         
  IRepository<HMAP> RHMAP,
         
  IRepository<INTEREST> RINTEREST,
         
  IRepository<IMAP> RIMAP,
         
   IHostingEnvironment HostingEnvironment)
        {
         
  this.rCUSTOMER = RCUSTOMER;
         
  this.rCOUNTRY = RCOUNTRY;
         
  this.rSTATE = RSTATE;
         
  this.rHOBBY = RHOBBY;
         
  this.rHMAP = RHMAP;
         
  this.rINTEREST = RINTEREST;
         
  this.rIMAP = RIMAP;
         
  this.hostingEnvironment = HostingEnvironment;
        }
       
[HttpGet]
        public
IActionResult Index()
        {
         
  return View(rCUSTOMER.Gets());
        }
       
[HttpGet]
        public
JsonResult Fillddl(int CID)
        {
         
  return Json(JsonConvert.SerializeObject(rSTATE.Gets().Where(m =>
m.CID == CID).ToList()));
        }
       
[HttpGet]
        public
IActionResult Create()
        {
         
  CUSTOMERVM vm = new CUSTOMERVM();
         
  vm.HOBBY = rHOBBY.Gets().Select(x => new SelectListItem {
Value=x.HID.ToString(), Text=x.DNAME }).ToList();
         
  vm.LCID =rCOUNTRY.Gets().Select(x => new SelectListItem { Value =
x.CID.ToString(), Text = x.CNAME }).ToList();
         
  vm.LINTEREST = rINTEREST.Gets().Select(x => new SelectListItem {
Value = x.IID.ToString(), Text = x.INAME }).ToList();
         
  return View(vm);
        }
       
[HttpPost]
        public
IActionResult Create(CUSTOMERVM vm)
        {
         
  if (ModelState.IsValid)
         
  {
         
      CUSTOMER cUSTOMER = new CUSTOMER();
         
      cUSTOMER.EID = vm.EID??0;
         
      cUSTOMER.NAME = vm.NAME;
         
      cUSTOMER.ADDRESS = vm.ADDRESS;
         
      cUSTOMER.PASSWORD = vm.PASSWORD;
         
      cUSTOMER.GENDER = vm.GENDER;
         
      cUSTOMER.EMAIL = vm.EMAIL;
         
      cUSTOMER.SALARY = vm.SALARY;
         
      cUSTOMER.DOJ = vm.DOJ;
         
      cUSTOMER.CID = vm.CID;
         
      cUSTOMER.SID = vm.SID;
         
      string uniqueFileName = null;
         
      string filePath = null;
         
      string uploadsFolder = string.Empty;
         
      if (vm.PHOTO != null)
         
      {
         
          uploadsFolder =
Path.Combine(hostingEnvironment.WebRootPath, "images");
         
          // To make sure the file name is unique we
are appending a new
         
          // GUID value and and an underscore to the
file name
         
          uniqueFileName = Guid.NewGuid().ToString() +
"_" + vm.PHOTO.FileName;
         
          filePath = Path.Combine(uploadsFolder,
uniqueFileName);
         
          // Use CopyTo() method provided by IFormFile
interface to
         
          // copy the file to wwwroot/images folder
         
          vm.PHOTO.CopyTo(new FileStream(filePath,
FileMode.Create));
         
      }
         
      cUSTOMER.PATH =uniqueFileName;
         
      rCUSTOMER.Save(cUSTOMER);
         
     
rHMAP.Multiplesave(vm.HOBBY.Where(n=>n.Selected).Select(x => new HMAP {
CID =vm.EID.Value, HID = Convert.ToInt32(x.Value) }).ToList());
         
      rIMAP.Multiplesave(vm.INTEREST.Select(x => new IMAP {
CID = vm.EID.Value, IID = Convert.ToInt32(x) }).ToList());
         
     return RedirectToAction("Index");
         
  }
         
  else
         
  {
         
      vm.HOBBY = rHOBBY.Gets().Select(x => new SelectListItem
{ Value = x.HID.ToString(), Text = x.DNAME }).ToList();
         
      vm.LCID = rCOUNTRY.Gets().Select(x => new
SelectListItem { Value = x.CID.ToString(), Text = x.CNAME }).ToList();
         
      vm.LSID = rSTATE.Gets().Where(M => M.CID ==
vm.CID).Select(x => new SelectListItem { Value = x.SID.ToString(), Text = x.SNAME
}).ToList();
         
      vm.LINTEREST = rINTEREST.Gets().Select(x => new
SelectListItem { Value = x.IID.ToString(), Text = x.INAME }).ToList();
         
      return View(vm);
         
  }
        }
       
[HttpGet]
        public
IActionResult Edit(int id)
        {
         
  CUSTOMERVM vm = new CUSTOMERVM();
         
  CUSTOMER cUSTOMER = rCUSTOMER.Get(id).Result;
         
  vm.EID = cUSTOMER.EID;
         
  vm.NAME = cUSTOMER.NAME;
         
  vm.ADDRESS = cUSTOMER.ADDRESS;
           
vm.GENDER = cUSTOMER.GENDER;
         
  vm.EMAIL = cUSTOMER.EMAIL;
         
  vm.SALARY = cUSTOMER.SALARY;
         
  vm.DOJ = cUSTOMER.DOJ;
         
  vm.CID = cUSTOMER.CID;
         
  vm.SID = cUSTOMER.SID;
         
  vm.LCID = rCOUNTRY.Gets().Select(x => new SelectListItem { Value =
x.CID.ToString(), Text = x.CNAME }).ToList();
         
  vm.LSID = rSTATE.Gets().Where(m=>m.CID==vm.CID).Select(x => new
SelectListItem { Value = x.SID.ToString(), Text = x.SNAME }).ToList();
         
  vm.LINTEREST = rINTEREST.Gets().Select(x => new SelectListItem {
Value = x.IID.ToString(), Text = x.INAME }).ToList();
         
  vm.INTEREST = rIMAP.Gets().Where(n => n.CID == vm.EID).Select(m =>
m.IID.ToString()).ToList();
         
  List<SelectListItem> hlst = new List<SelectListItem>();
         
  int mark = 0;
         
  var hobby = rHOBBY.Gets().ToList();
         
  var mhobby = rHMAP.Gets().Where(m => m.CID == vm.EID).ToList();
         
  foreach (HOBBY hb in hobby)
         
  {
         
      mark = 0;
         
      foreach (HMAP hm in mhobby)
         
      {
         
          if (hb.HID == hm.HID)
         
          {
         
              mark = 1;
         
              break;
         
          }
         
      }
         
      if (mark == 1)
         
          hlst.Add(new SelectListItem {
Value=hb.HID.ToString(), Text=hb.DNAME, Selected=true });
         
      else
         
          hlst.Add(new SelectListItem { Value =
hb.HID.ToString(), Text = hb.DNAME, Selected =false });
         
  }
         
  vm.HOBBY = hlst;
         
  return View(vm);
        }
       
[HttpPost]
        public
IActionResult Edit(CUSTOMERVM vm)
        {
         
  ModelState.Remove("PASSWORD");
         
  ModelState.Remove("CPASSWORD");
         
  ModelState.Remove("PHOTO");
         
  if (ModelState.IsValid)
         
  {
         
      CUSTOMER cUSTOMER = rCUSTOMER.Get(vm.EID.Value).Result;
         
      cUSTOMER.NAME = vm.NAME;
         
      cUSTOMER.ADDRESS = vm.ADDRESS;
         
      cUSTOMER.GENDER = vm.GENDER;
         
      cUSTOMER.EMAIL = vm.EMAIL;
         
      cUSTOMER.SALARY = vm.SALARY;
         
      cUSTOMER.DOJ = vm.DOJ;
         
      cUSTOMER.CID = vm.CID;
         
      cUSTOMER.SID = vm.SID;
         
      string uniqueFileName = null;
         
      string filePath = null;
         
      string uploadsFolder = string.Empty;
         
      if (vm.PHOTO != null)
         
      {
         
          uploadsFolder =
Path.Combine(hostingEnvironment.WebRootPath, "images");
         
          // To make sure the file name is unique we
are appending a new
         
          // GUID value and and an underscore to the
file name
         
          uniqueFileName = Guid.NewGuid().ToString() +
"_" + vm.PHOTO.FileName;
         
          filePath = Path.Combine(uploadsFolder,
uniqueFileName);
         
          // Use CopyTo() method provided by IFormFile
interface to
         
          // copy the file to wwwroot/images folder
         
          vm.PHOTO.CopyTo(new FileStream(filePath,
FileMode.Create));
         
          cUSTOMER.PATH = uniqueFileName;
         
      }
         
      var data = rHMAP.Gets().Where(m => m.CID ==
vm.EID.Value).ToList();
         
      var data1 = rIMAP.Gets().Where(m => m.CID ==
vm.EID.Value).ToList();
         
      rCUSTOMER.Update(cUSTOMER);
         
      foreach (HMAP hm in data)
         
          rHMAP.Delete(hm.ID);
         
      rHMAP.Multiplesave(vm.HOBBY.Where(n =>
n.Selected).Select(x => new HMAP { CID = vm.EID.Value, HID =
Convert.ToInt32(x.Value) }).ToList());
         
      foreach (IMAP im in data1)
         
          rIMAP.Delete(im.ID);
         
      rIMAP.Multiplesave(vm.INTEREST.Select(x => new IMAP {
CID = vm.EID.Value, IID = Convert.ToInt32(x) }).ToList());
         
      return RedirectToAction("Index");
         
  }
         
  else
         
  {
         
      vm.HOBBY = rHOBBY.Gets().Select(x => new SelectListItem
{ Value = x.HID.ToString(), Text = x.DNAME }).ToList();
         
      vm.LCID = rCOUNTRY.Gets().Select(x => new
SelectListItem { Value = x.CID.ToString(), Text = x.CNAME }).ToList();
         
      vm.LSID = rSTATE.Gets().Where(M => M.CID == vm.CID).Select(x
=> new SelectListItem { Value = x.SID.ToString(), Text = x.SNAME
}).ToList();
         
      vm.LINTEREST = rINTEREST.Gets().Select(x => new
SelectListItem { Value = x.IID.ToString(), Text = x.INAME }).ToList();
         
      return View(vm);
         
  }
        }
       
[HttpGet]
        public
IActionResult Check(string EMAIL)
        {
         
  if (EMAIL == null)
         
      return Json(false);
         
  else
         
      return Json(!rCUSTOMER.Gets().Any(m => m.EMAIL ==
EMAIL));
        }
       
[HttpPost]
        public
IActionResult DeleteAll(List<int> Lst)
        {
         
     
rCUSTOMER.Multipledelete(rCUSTOMER.Gets().Where(n=>Lst.Contains(n.EID)).ToList());
         
   rHMAP.Multipledelete(rHMAP.Gets().Where(p=>Lst.Contains(p.CID)).ToList());
         
 
 rIMAP.Multipledelete(rIMAP.Gets().Where(m=>Lst.Contains(m.CID)).ToList());
         
  return Json("1");
        }
       
[HttpGet]
        public
IActionResult Delete(int id)
        {
         
  var data = rHMAP.Gets().Where(m => m.CID == id).ToList();
         
  var data1 = rIMAP.Gets().Where(m => m.CID == id).ToList();
         
  rCUSTOMER.Delete(id);
         
  foreach (HMAP hm in data)
         
      rHMAP.Delete(hm.ID);
         
  foreach (IMAP im in data1)
         
      rIMAP.Delete(im.ID);
         
return  RedirectToAction("Index");
        }
    }
}
Index View :
@model IEnumerable<CUSTOMER>
@{
   
ViewData["Title"] = "Index";
}
<p
style="margin-top:5px">
    <a
asp-action="Create" class="btn btn-primary"
style="width:80px">Create</a>
</p>
<div style="border:1px solid
#000000">
    <table
class="table table-condensed table-hover table-responsive"
id="tb">
        <thead
class="bg bg-primary">
         
  <tr>
         
      <th>
         
          <input type="checkbox"
class="hcb" />
         
      </th>
         
      <th>
         
          @Html.DisplayNameFor(model => model.EID)
         
      </th>
         
      <th>
         
          @Html.DisplayNameFor(model => model.NAME)
         
      </th>
         
      <th>
         
          @Html.DisplayNameFor(model =>
model.ADDRESS)
         
      </th>
         
      <th>
         
          @Html.DisplayNameFor(model =>
model.GENDER)
         
      </th>
         
      <th>
         
          @Html.DisplayNameFor(model =>
model.EMAIL)
         
      </th>
         
      <th>
         
          @Html.DisplayNameFor(model =>
model.SALARY)
         
      </th>
         
      <th>
         
          @Html.DisplayNameFor(model => model.DOJ)
         
      </th>
         
      <th>
         
          PHOTO
         
      </th>
         
      <th>ACTION</th>
         
  </tr>
       
</thead>
       
<tbody>
         
  @foreach (var item in Model)
         
  {
         
      <tr>
         
          <td>
         
              <input
type="checkbox" value="@item.EID" class="cb"
/>
         
          </td>
         
          <td>
         
              @Html.DisplayFor(modelItem
=> item.EID)
         
          </td>
         
          <td>
         
              @Html.DisplayFor(modelItem
=> item.NAME)
         
          </td>
         
          <td>
         
              @Html.DisplayFor(modelItem
=> item.ADDRESS)
         
          </td>
         
          <td>
         
              @Html.DisplayFor(modelItem
=> item.GENDER)
         
          </td>
         
          <td>
         
              @Html.DisplayFor(modelItem
=> item.EMAIL)
         
          </td>
         
          <td>
         
              @Html.DisplayFor(modelItem
=> item.SALARY)
         
          </td>
         
          <td>
         
              @{
         
                  string s =
string.Format("{0:dd-MMM-yy}", item.DOJ);
         
              }
         
              @s
         
          </td>
         
          <td>
         
              @{
         
                  string t =
"~/images/" + item.PATH;
         
              }
         
              <img height="50"
width="50" src="@t" asp-append-version="true"
/>
         
          </td>
         
          <td>
         
             
@Html.ActionLink("Edit", "Edit", new { id = item.EID }) |
         
             
@Html.ActionLink("Delete", "Delete", new { id = item.EID })
         
          </td>
         
      </tr>
         
  }
       
</tbody>
    </table>
</div>
<p
style="margin-top:2px">
    <input type="button"
class="btn btn-primary" value="Delete All"
id="btnDel" />
</p>
@section Scripts {
    @{await
Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script
type="text/javascript">
       
$(function () {
         
  $('#tb').on("click", ".hcb", function () {
         
      $(".cb").attr("checked",
this.checked);
         
  });
         
  $('#tb').on("click", ".cb", function () {
         
      if ($('.cb').length == $('.cb:checked').length)
         
         
$(".hcb").attr("checked", true);
         
      else
         
         
$(".hcb").attr("checked", false);
         
  });
         
  var table = $("#tb").DataTable({
         
      "order": [[0, "asc"]],
         
      "lengthMenu": [[2, 10, 25, 50, -1], [2, 10, 25,
50, "All"]],
         
      "scroller": true,
         
      "orderClasses": false,
         
  });
         
  $('#btnDel').click(function () {
         
      if ($('#tb').find('.cb:checked').length == 0) {
         
          alert('Please select a item from the list.')
         
          return;
         
      }
         
      var ids = [];
         
      if (confirm('Do you want to delete it ?')) {
         
          $('#tb').find('.cb:checked').each(function
(i, j) {
         
              ids.push(j.value);
         
          });
         
          $.ajax({
         
              "url":
'@Url.Action("DeleteAll", "Custom")',
         
              type: 'Post',
         
              datatype: 'json',
         
              cache: false,
         
              async: true,
         
              data: { Lst: ids },
         
              success: function (data) {
         
                  if (data == 1)
         
                     
window.location.reload(true);
         
              }
         
          });
         
      }
         
  });
        })
    </script>
    }
Create View :
@model CUSTOMERVM
@{
   
ViewData["Title"] = "Create";
}
<div class="row">
    <div
class="col-md-4">
        <form
asp-action="Create" asp-controller="Custom"
method="post" enctype="multipart/form-data">
         
  <div asp-validation-summary="ModelOnly"
class="text-danger"></div>
         
  <div class="form-group">
         
      <label asp-for="EID"
class="control-label"></label>
         
      <input asp-for="EID"
class="form-control" />
         
      <span asp-validation-for="EID"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="NAME"
class="control-label"></label>
         
      <input asp-for="NAME"
class="form-control" />
         
      <span asp-validation-for="NAME"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="ADDRESS"
class="control-label"></label>
         
      <textarea asp-for="ADDRESS"
class="form-control"></textarea>
         
      <span asp-validation-for="ADDRESS" class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="PASSWORD"
class="control-label"></label>
         
      <input asp-for="PASSWORD"
class="form-control" />
         
      <span asp-validation-for="PASSWORD"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="CPASSWORD"
class="control-label"></label>
         
      <input asp-for="CPASSWORD"
class="form-control" />
         
      <span asp-validation-for="CPASSWORD"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="GENDER"
class="control-label"></label>
         
      <input type="radio" asp-for="GENDER"
value="Male" />Male
         
      <input type="radio"
asp-for="GENDER" value="Female" />Female
         
      <span asp-validation-for="GENDER"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="EMAIL"
class="control-label"></label>
         
      <input asp-for="EMAIL"
class="form-control" />
         
      <span asp-validation-for="EMAIL"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="SALARY"
class="control-label"></label>
         
      <input asp-for="SALARY"
class="form-control" />
         
      <span asp-validation-for="SALARY"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="DOJ"
class="control-label"></label>
         
      <input autocomplete="off"
asp-for="DOJ" class="form-control" />
         
      <span asp-validation-for="DOJ"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="HOBBY"
class="control-label"></label>
         
      @for (int i = 0; i < Model.HOBBY.Count(); i++)
         
      {
         
          <input type="hidden"
asp-for="@Model.HOBBY[i].Text" />
         
          <input type="hidden"
asp-for="@Model.HOBBY[i].Value" />
         
          <input
asp-for="@Model.HOBBY[i].Selected" class="form-check-input"
/>
         
          <label class="form-check-label"
asp-for="@Model.HOBBY[i].Selected">
         
              @Model.HOBBY[i].Text
         
          </label>
         
      }
         
      <span asp-validation-for="HOBBY"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="CID"
class="control-label"></label>
         
      <select asp-for="CID"
asp-items="Model.LCID" class="form-control">
         
          <option
value="">Select</option>
         
      </select>
         
      <span asp-validation-for="CID"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="SID"
class="control-label"></label>
         
      <select asp-for="SID"
asp-items="Model.LSID" class="form-control">
         
          <option value="">Select</option>
         
      </select>
         
      <span asp-validation-for="SID"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="INTEREST"
class="control-label"></label>
         
      <select asp-for="INTEREST" multiple
asp-items="Model.LINTEREST"
class="form-control"></select>
         
      <span asp-validation-for="INTEREST"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="PHOTO"
class="control-label"></label>
         
      <input type="file" asp-for="PHOTO"
class="form-control" />
         
      <span asp-validation-for="PHOTO"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <input type="submit" value="Create"
class="btn btn-default" />
         
  </div>
       
</form>
    </div>
</div>
<div>
    <a
asp-action="Index">Back to List</a>
</div>
@section Scripts {
    @{await
Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script
type="text/javascript">
       
$(function () {
         
  $('#DOJ').prop("type", "");
         
  $('#DOJ').val("");
         
  $('#INTEREST').multiselect();
         
  $('#DOJ').datepicker();
         
  $('#CID').change(function () {
         
    $.ajax({
         
      url: '@Url.Action("Fillddl",
"Custom")',
         
    data: { CID: $(this).val() },
         
      type: 'GET',
         
      dataType: 'json',
         
      contentType: 'application/json; charset=utf-8',
         
      success: function (result) {
         
          $('#SID').empty();
         
          $('#SID').append("<option
value=''>Select</option>");
         
          $.each(JSON.parse(result), function (i, j) {
         
             
$('#SID').append("<option value='" + j.SID + "'>" +
j.SNAME + "</option>");
         
          });
         
      }
         
  });
         
  });
        });
    </script>
}
Edit View :
@model CUSTOMERVM
@{
   
ViewData["Title"] = "Edit";
}
<div class="row">
    <div
class="col-md-4">
        <form
asp-action="Edit"  asp-controller="Custom"
method="post" enctype="multipart/form-data">
         
  <div asp-validation-summary="ModelOnly"
class="text-danger"></div>
         
  <div class="form-group">
         
      <label asp-for="NAME"
class="control-label"></label>
         
      <input asp-for="NAME"
class="form-control" />
         
      <input type="hidden"
asp-for="EID"  />
         
      <span asp-validation-for="NAME"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="ADDRESS"
class="control-label"></label>
         
      <textarea asp-for="ADDRESS"
class="form-control"></textarea>
         
      <span asp-validation-for="ADDRESS"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="GENDER"
class="control-label"></label>
         
      <input type="radio"
asp-for="GENDER" value="Male" />Male
         
      <input type="radio"
asp-for="GENDER" value="Female" />Female
         
      <span asp-validation-for="GENDER" class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="EMAIL"
class="control-label"></label>
         
      <input asp-for="EMAIL"
class="form-control" />
         
      <span asp-validation-for="EMAIL"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="SALARY"
class="control-label"></label>
         
      <input asp-for="SALARY"
class="form-control" />
         
      <span asp-validation-for="SALARY"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="DOJ"
class="control-label"></label>
         
      <input autocomplete="off"
asp-for="DOJ" class="form-control" />
         
      <span asp-validation-for="DOJ"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="HOBBY"
class="control-label"></label>
         
      @for (int i = 0; i < Model.HOBBY.Count(); i++)
         
      {
         
          <input type="hidden"
asp-for="@Model.HOBBY[i].Text" />
         
          <input type="hidden"
asp-for="@Model.HOBBY[i].Value" />
         
          <input
asp-for="@Model.HOBBY[i].Selected" class="form-check-input"
/>
         
          <label class="form-check-label"
asp-for="@Model.HOBBY[i].Selected">
         
              @Model.HOBBY[i].Text
         
          </label>
         
      }
         
      <span asp-validation-for="HOBBY"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="CID"
class="control-label"></label>
         
      <select asp-for="CID"
asp-items="Model.LCID" class="form-control">
         
          <option
value="">Select</option>
         
      </select>
         
      <span asp-validation-for="CID"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="SID"
class="control-label"></label>
         
      <select asp-for="SID"
asp-items="Model.LSID" class="form-control">
         
          <option
value="">Select</option>
         
      </select>
         
      <span asp-validation-for="SID" class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="INTEREST"
class="control-label"></label>
         
      <select asp-for="INTEREST" multiple
asp-items="Model.LINTEREST" class="form-control"></select>
         
      <span asp-validation-for="INTEREST"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <label asp-for="PHOTO"
class="control-label"></label>
         
      <input type="file" 
asp-for="PHOTO" class="form-control" />
         
      <span asp-validation-for="PHOTO"
class="text-danger"></span>
         
  </div>
         
  <div class="form-group">
         
      <input type="submit" id="btn"
value="Create" class="btn btn-default" />
         
  </div>
       
</form>
    </div>
</div>
<div>
    <a
asp-action="Index">Back to List</a>
</div>
@section Scripts {
    @{await
Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script
type="text/javascript">
       
$(function () {
         
  $("#PHOTO").rules("remove", "required")
         
  $("#EMAIL").rules("remove", "remote")
         
  $('#DOJ').prop("type", "");
         
  $('#INTEREST').multiselect();
         
  $('#DOJ').datepicker();
         
  $('#CID').change(function () {
         
    $.ajax({
         
      url: '@Url.Action("Fillddl",
"Custom")',
         
    data: { CID: $(this).val() },
         
      type: 'GET',
         
      dataType: 'json',
         
      contentType: 'application/json; charset=utf-8',
         
      success: function (result) {
         
          $('#SID').empty();
         
          $('#SID').append("<option
value=''>Select</option>");
         
          $.each(JSON.parse(result), function (i, j) {
         
             
$('#SID').append("<option value='" + j.SID + "'>" +
j.SNAME + "</option>");
         
          });
         
      }
         
  });
         
  });
        });
    </script>
}
Layout View :
<!DOCTYPE html>
<html>
<head>
    <meta
charset="utf-8" />
    <meta
name="viewport" content="width=device-width,
initial-scale=1.0" />
   
<title>@ViewData["Title"] - WebApplication1</title>
    <environment
include="Development">
        <link href="~/css/jquery-ui.css"
rel="stylesheet" />
        <link
rel="stylesheet" href="~/css/site.css" />
        <link
href="~/css/DataTables/css/jquery.dataTables.css"
rel="stylesheet" />
     
  <link href="~/css/DataTables/css/jquery.dataTables_themeroller.css"
rel="stylesheet" />
     
  <link href="~/css/jquery.multiselect.css"
rel="stylesheet" />
        <link
rel="stylesheet"
href="~/lib/bootstrap/dist/css/bootstrap.css" />
    </environment>
    <environment
exclude="Development">
        <link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
         
   
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
         
    asp-fallback-test-class="sr-only"
asp-fallback-test-property="position"
asp-fallback-test-value="absolute" />
        <link
rel="stylesheet" href="~/css/site.min.css"
asp-append-version="true" />
    </environment>
</head>
<body>
    <nav
class="navbar navbar-inverse navbar-fixed-top">
        <div
class="container">
         
  <div class="navbar-header">
         
      <button type="button"
class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-collapse">
         
          <span class="sr-only">Toggle
navigation</span>
         
          <span
class="icon-bar"></span>
         
          <span
class="icon-bar"></span>
         
          <span
class="icon-bar"></span>
         
      </button>
         
      <a asp-area=""
asp-controller="Home" asp-action="Index"
class="navbar-brand">WebApplication1</a>
         
  </div>
         
  <div class="navbar-collapse collapse">
         
      <ul class="nav navbar-nav">
         
          <li><a asp-area=""
asp-controller="Home"
asp-action="Index">Home</a></li>
         
          <li><a asp-area=""
asp-controller="Home"
asp-action="About">About</a></li>
         
          <li><a asp-area=""
asp-controller="Home"
asp-action="Contact">Contact</a></li>
         
      </ul>
         
  </div>
       
</div>
    </nav>
    <partial
name="_CookieConsentPartial" />
    <div
class="container body-content">
       
@RenderBody()
        <hr
/>
       
<footer>
         
  <p>© 2019 - WebApplication1</p>
       
</footer>
    </div>
    <environment
include="Development">
       
<script src="~/lib/jquery/dist/jquery.js"></script>
        <script
src="~/js/jquery-ui.js"></script>
     
  <script src="~/js/multiselect.js"></script>
     
  <script
src="~/js/DataTables/jquery.dataTables.js"></script>
        <script
src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
       
<script src="~/js/site.js"
asp-append-version="true"></script>
    </environment>
    <environment
exclude="Development">
       
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"
         
     
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
         
      asp-fallback-test="window.jQuery"
         
      crossorigin="anonymous"
         
     
integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT">
       
</script>
       
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"
         
     
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
         
      asp-fallback-test="window.jQuery &&
window.jQuery.fn && window.jQuery.fn.modal"
         
      crossorigin="anonymous"
         
     
integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd">
       
</script>
       
<script src="~/js/site.min.js" asp-append-version="true"></script>
    </environment>
   
@RenderSection("Scripts", required: false)
</body>
</html>
How to Save date in MVC6  using
jquery:
Controller :
 [HttpPost]
        public
IActionResult Add(JBS vm)
        {
         
  JRepository.Save(vm);
         
  return Json("Data Saved.");
        }
View :
@model JBSVM;
@{
   
ViewData["Title"] = "Add";
}
<form
class="form-horizontal" style="margin-top:20px">
    <div
class="form-group">
       
<label class="control-label col-lg-4">EID</label>
        <div
class="col-lg-4">
         
  <input type="text" class="form-control"
id="eid" />
       
</div>
    </div>
    <div
class="form-group">
       
<label class="control-label col-lg-4">NAME</label>
        <div
class="col-lg-4">
         
  <input type="text" class="form-control"
id="name" />
       
</div>
    </div>
    <div
class="form-group">
       
<label class="control-label col-lg-4"></label>
        <div
class="col-lg-4">
         
  <input type="button" class="btn btn-primary"
value="Save" style="width:80px" id="btn" />
       
</div>
    </div>
</form>
@section Scripts {
    @{await
Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script
type="text/javascript">
       
$('#btn').click(function () {
         
  $.ajax({
         
          "url": 
'@Url.Action("Add", "Jagannath")',
         
          type: 'Post',
         
          datatype: 'json',
         
          cache: false,
         
          async: true,
         
          data: { JID: $('#eid').val(), NAME:
$('#name').val() },
         
          success: function (data) {
         
              alert(data);
         
              window.location.href =
"Index";
         
          },
         
          error: function (t) {
         
              alert(t.responseText);
         
          }
         
      });
        })
    </script>
}
No comments:
Post a Comment