Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>JohnCenaNew to Visual Studio Code? Get it now.
JohnCena

JohnCena

johncena

|
4 installs
| (0) | Free
You can’t see me.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

User.cs

using System.ComponentModel.DataAnnotations;

namespace MVC_Core_Task.Models { public class User { public int Id { get; set; }

    [Required, StringLength(20, MinimumLength = 3)]
    public string FirstName { get; set; }

    [Required, StringLength(20, MinimumLength = 3)]
    public string LastName { get; set; }

    [Required, EmailAddress]
    public string Email { get; set; }

    [Required, StringLength(15, MinimumLength = 6)]
    public string Password { get; set; }

    [Range(18, 60)]
    public int? Age { get; set; }

    [Required]
    public Gender? Gender { get; set; }

    [Required, RegularExpression(@"\d{10}$")]
    public string Mobileno { get; set; }

    public int CountryId { get; set; }
    public int StateId { get; set; }
    public int CityId { get; set; }

    public string Address { get; set; }

    public bool IsDeleted { get; set; } = false;

    public Country Country { get; set; }
    public State State { get; set; }
    public City City { get; set; }
}

public enum Gender { Male, Female }

}

Country.cs

namespace MVC_Core_Task.Models { public class Country { public int Id { get; set; } public string Name { get; set; } } }

State.cs

namespace MVC_Core_Task.Models { public class State { public int Id { get; set; } public string Name { get; set; }

    public int CountryId { get; set; }
    public Country Country { get; set; }
}

}

City.cs

namespace MVC_Core_Task.Models { public class City { public int Id { get; set; } public string Name { get; set; }

    public int StateId { get; set; }
    public State State { get; set; }
}

}

AppDbContext

using Microsoft.EntityFrameworkCore;

namespace MVC_Core_Task.Models { public class AppDbContext : DbContext { public AppDbContext(DbContextOptions options) : base(options) { }

    public DbSet<User> Users { get; set; }
    public DbSet<Country> Countries { get; set; }
    public DbSet<State> States { get; set; }
    public DbSet<City> Cities { get; set; }
}

}

UserViewModel.cs

using Microsoft.AspNetCore.Mvc.Rendering; using MVC_Core_Task.Models;

namespace MVC_Core_Task.ViewModels { public class UserViewModel { public User User { get; set; }

    public List<User> Users { get; set; }

    public List<SelectListItem> Countries { get; set; }
    public List<SelectListItem> States { get; set; }
    public List<SelectListItem> Cities { get; set; }

    public int CurrentPage { get; set; }
    public int TotalPages { get; set; }
}

}

Program.cs

using Microsoft.EntityFrameworkCore; using MVC_Core_Task.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews();

builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

var app = builder.Build();

app.UseStaticFiles(); app.UseRouting();

app.MapControllerRoute( name: "default", pattern: "{controller=User}/{action=Index}/{id?}");

app.Run();

appsetting.json

{ "ConnectionStrings": { "DefaultConnection": "Server=.;Database=MVCCoreDB;Trusted_Connection=True;TrustServerCertificate=True" } }

UserController.cs

using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.AspNetCore.Mvc.Rendering; using MVC_Core_Task.Models; using MVC_Core_Task.ViewModels;

namespace MVC_Core_Task.Controllers { public class UserController : Controller { private readonly AppDbContext _context; private int pageSize = 5;

    public UserController(AppDbContext context)
    {
        _context = context;
    }

    public IActionResult Index(int page = 1)
    {
        var users = _context.Users
            .Include(x => x.Country)
            .Include(x => x.State)
            .Include(x => x.City)
            .Where(x => !x.IsDeleted)
            .Skip((page - 1) * pageSize)
            .Take(pageSize)
            .ToList();

        var vm = new UserViewModel
        {
            Users = users,
            User = new User(),
            Countries = _context.Countries.Select(x => new SelectListItem
            {
                Value = x.Id.ToString(),
                Text = x.Name
            }).ToList(),

            CurrentPage = page,
            TotalPages = (int)Math.Ceiling(_context.Users.Count(x => !x.IsDeleted) / (double)pageSize)
        };

        return View(vm);
    }

    [HttpPost]
    public IActionResult Save(UserViewModel vm)
    {
        if (ModelState.IsValid)
        {
            if (vm.User.Id == 0)
                _context.Users.Add(vm.User);
            else
                _context.Users.Update(vm.User);

            _context.SaveChanges();
            return RedirectToAction("Index");
        }

        return View("Index", vm);
    }

    public IActionResult Delete(int id)
    {
        var user = _context.Users.Find(id);
        user.IsDeleted = true;
        _context.SaveChanges();
        return RedirectToAction("Index");
    }

    public JsonResult GetStates(int countryId)
    {
        var states = _context.States
            .Where(x => x.CountryId == countryId)
            .Select(x => new { x.Id, x.Name })
            .ToList();

        return Json(states);
    }

    public JsonResult GetCities(int stateId)
    {
        var cities = _context.Cities
            .Where(x => x.StateId == stateId)
            .Select(x => new { x.Id, x.Name })
            .ToList();

        return Json(cities);
    }
}

}

Index.cshtml @model MVC_Core_Task.ViewModels.UserViewModel

<input asp-for="User.LastName" />
<input asp-for="User.Email" />
<input asp-for="User.Password" type="password" />
<input asp-for="User.Age" />

<select asp-for="User.CountryId" asp-items="Model.Countries">
    <option>Select Country</option>
</select>

<select asp-for="User.StateId"></select>
<select asp-for="User.CityId"></select>

<button type="submit">Save</button>

@foreach (var item in Model.Users) { }
@item.FirstName @item.Email @item.Country?.Name Delete

full bootstrap ui

views/shared/_Layout.cshtml

@RenderBody()
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

Index.cshtml

@model MVC_Core_Task.ViewModels.UserViewModel

User Form

<div class="row g-3">

    <!-- First Name -->
    <div class="col-md-4">
        <label class="form-label required">First Name</label>
        <input asp-for="User.FirstName" class="form-control" />
        <span asp-validation-for="User.FirstName" class="text-danger"></span>
    </div>

    <!-- Last Name -->
    <div class="col-md-4">
        <label class="form-label required">Last Name</label>
        <input asp-for="User.LastName" class="form-control" />
        <span asp-validation-for="User.LastName"></span>
    </div>

    <!-- Email -->
    <div class="col-md-4">
        <label class="form-label required">Email</label>
        <input asp-for="User.Email" class="form-control" />
        <span asp-validation-for="User.Email"></span>
    </div>

    <!-- Password -->
    <div class="col-md-4">
        <label class="form-label required">Password</label>
        <input asp-for="User.Password" type="password" class="form-control" />
        <span asp-validation-for="User.Password"></span>
    </div>

    <!-- Age -->
    <div class="col-md-4">
        <label class="form-label required">Age</label>
        <input asp-for="User.Age" class="form-control" />
        <span asp-validation-for="User.Age"></span>
    </div>

    <!-- Gender -->
    <div class="col-md-4">
        <label class="form-label required">Gender</label><br />
        @foreach (var g in Enum.GetValues(typeof(MVC_Core_Task.Models.Gender)))
        {
            <input type="radio" asp-for="User.Gender" value="@g" /> @g <br />
        }
        <span asp-validation-for="User.Gender"></span>
    </div>

    <!-- Country -->
    <div class="col-md-4">
        <label class="form-label required">Country</label>
        <select asp-for="User.CountryId" asp-items="Model.Countries" class="form-control" id="CountryId">
            <option value="">Select Country</option>
        </select>
    </div>

    <!-- State -->
    <div class="col-md-4">
        <label class="form-label required">State</label>
        <select asp-for="User.StateId" class="form-control" id="StateId">
            <option value="">Select State</option>
        </select>
    </div>

    <!-- City -->
    <div class="col-md-4">
        <label class="form-label required">City</label>
        <select asp-for="User.CityId" class="form-control" id="CityId">
            <option value="">Select City</option>
        </select>
    </div>

    <!-- Mobile -->
    <div class="col-md-4">
        <label class="form-label required">Mobile</label>
        <input asp-for="User.Mobileno" class="form-control" />
        <span asp-validation-for="User.Mobileno"></span>
    </div>

    <!-- Address -->
    <div class="col-md-8">
        <label class="form-label">Address</label>
        <textarea asp-for="User.Address" class="form-control"></textarea>
    </div>

</div>

<br />

<button type="submit" class="btn btn-primary">
    @(Model.User.Id == 0 ? "Save" : "Update")
</button>

<button type="reset" class="btn btn-danger">Reset</button>

Records

<tbody>
    @foreach (var item in Model.Users)
    {
        <tr>
            <td>@item.FirstName @item.LastName</td>
            <td>@item.Email</td>
            <td>@item.Mobileno</td>
            <td>@item.Country?.Name</td>
            <td>@item.State?.Name</td>
            <td>@item.City?.Name</td>

            <td>
                <a asp-action="Index" asp-route-id="@item.Id" class="btn btn-sm btn-info">Edit</a>

                <button class="btn btn-sm btn-danger delete-btn" data-id="@item.Id">
                    Delete
                </button>
            </td>
        </tr>
    }
</tbody>
Name Email Mobile Country State City Action
    @for (int i = 1; i <= Model.TotalPages; i++) {
  • @i
  • }
Confirm Delete
Are you sure you want to delete?

javascript

@section Scripts{

}

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft