Simple way to create dropdwon in MVC with EntityFramework.
Step:1 Create KeyValuePair Class in ModelLayer
namespace Model
{
public class KeyValuePair
{
public int Val { get; set; }
public string label { get; set; }
}
}
Step:2 Create DropDownModel Model in ModelLayer
using System.Collections.Generic;
namespace Model
{
public class DropDownModel
{
public int RollNo { get; set; }
public string Name { get; set; }
public List<KeyValuePair> KeyValuePair { get; set; }
public List<KeyValuePair> KeyValuePair1 { get; set; }
public List<KeyValuePair> KeyValuePair2 { get; set; }
public List<KeyValuePair> KeyValuePair3 { get; set; }
}
}
Step:3 Create Class StudentManagement in BussinessLayer.
Step:4 Add Entity in dataLayer.
Step:5 Create Method to get Data from Database using Entity.
using DataLayer;
using Model;
using System.Collections.Generic;
using System.Linq;
namespace BussinessLayer
{
public class StudentManegament
{
public List<KeyValuePair> getDropDownData()
{
List<KeyValuePair> keyValuePairs = new List<KeyValuePair>();
using (var Context = new StudentDBEntities())
{
keyValuePairs = (from std in Context.getStudentList() select new KeyValuePair
{
label=std.Name,
Val=std.Roll
}).ToList();
}
return keyValuePairs;
}
}
}
Step:6 Create Home Controller.
Step:7 Create Action Method DropDown in Home Controller.
using BussinessLayer;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace DotNetByPriyanshu.Controllers
{
public class HomeController : Controller
{
public ActionResult DropDown()
{
StudentManegament studentManegament = new StudentManegament();
DropDownModel dropDownModel = new DropDownModel();
dropDownModel.KeyValuePair1 = studentManegament.getDropDownData();
dropDownModel.KeyValuePair2 = studentManegament.getDropDownData();
dropDownModel.KeyValuePair3 = studentManegament.getDropDownData();
return View(dropDownModel);
}
}
}
Step:8 Add View with DropDownModel
@model Model.DropDownModel
@{
ViewBag.Title = "About";
}
<h2>About</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>DropDownModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="col-md-5">
@Html.DropDownListFor(x => Model.RollNo, new SelectList(Model.KeyValuePair1, "Val", "label"), "Select1", htmlAttributes: new { @class = "form-control", @id = "DDlRegion" })
@Html.ValidationMessageFor(x => x.KeyValuePair, "", new { @class = "text-danger" })
</div>
</div> <div class="form-group">
<div class="col-md-5">
@Html.DropDownListFor(x => Model.RollNo, new SelectList(Model.KeyValuePair2, "Val", "label"), "Select2", htmlAttributes: new { @class = "form-control", @id = "DDlRegion" })
@Html.ValidationMessageFor(x => x.KeyValuePair, "", new { @class = "text-danger" })
</div>
</div> <div class="form-group">
<div class="col-md-5">
@Html.DropDownListFor(x => Model.RollNo, new SelectList(Model.KeyValuePair3, "Val", "label"), "Select3", htmlAttributes: new { @class = "form-control", @id = "DDlRegion" })
@Html.ValidationMessageFor(x => x.KeyValuePair, "", new { @class = "text-danger" })
</div>
</div>
</div>
}
Database
Table StudentInfo:
/****** Object: Table [dbo].[StudentInfo] Script Date: 7/23/2019 2:41:02 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[StudentInfo](
[Roll] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](100) NULL,
[Course] [varchar](100) NULL,
[Mobile] [varchar](100) NULL,
[Address] [varchar](100) NULL,
CONSTRAINT [PK_StudentInfo] PRIMARY KEY CLUSTERED
(
[Roll] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
StoredProcedure [dbo].[getStudentList]:
/****** Object: StoredProcedure [dbo].[getStudentList] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Dot Net By Priyanshu
-- Create date: 12-12-2018
-- Description: getStudentList
-- =============================================
ALTER PROCEDURE [dbo].[getStudentList]
AS
BEGIN
SET NOCOUNT ON;
SELECT [Roll]
,[Name]
FROM [StudentDB].[dbo].[StudentInfo]
END