Step 1 : Create A Database Table

"Country"

"State"


Step 2 : Click On Visual Studio Create A New Project
Step 3 : Connect Your Database (Like As Vedio).

Step 4 : Create A New Class (Like As Vedio).

Step 5 : Write Down The Below Code In Your Controller

public class HomeController : Controller
    {
        MVCTutorialEntities db = new MVCTutorialEntities();
        public ActionResult Index()
        {
            List<Country> CountryList = db.Countries.ToList();
            ViewBag.CountryList = new SelectList(CountryList, "CountryId", "CountryName");
            return View();
        }

        public JsonResult GetStateList(int CountryId)
        {
            db.Configuration.ProxyCreationEnabled = false;
            List<State> StateList = db.States.Where(x => x.CountryId == CountryId).ToList();
            return Json(StateList, JsonRequestBehavior.AllowGet);

        }
        
    }

Step 5 : Write Down The Below Code In Your View.

@model CascadingDropDownListDemo.Models.CountryStateViewModel

<br /><br />
<div class="container">
    <div class="form-group">
        @if (ViewBag.CountryList != null)
        {
            @Html.DropDownListFor(model => model.CountryId, ViewBag.CountryList as SelectList, "--Select Country--", new { @class="form-control"})
        }
    </div>
    <div class="form-group">
            @Html.DropDownListFor(model => model.StateId,new SelectList(" "), "--Select State--", new { @class = "form-control" })
    </div>
</div>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
    $(document).ready(function () {
        $("#CountryId").change(function () {
            $.get("/Home/GetStateList", { CountryId: $("#CountryId").val() }, function (data) {
                $("#StateId").empty();
                $.each(data, function (index, row) {
                    $("#StateId").append("<option value='" + row.StateId + "'>" + row.StateName + "</option>")
                });
            });
        })
    });
</script>

Run Project