Step 1:
- Open Visual Studio 2015 => Go to File Menu => New => Project...
Step 2:
- In the Installed Templates list, select Visual C# => Web
Step 3:
- Select ASP.Net Web Application (.NET Framework) from the Web
list => Type MVC_CRUD in the Name box => Click OK
Step 4:
- Select MVC template from ASP.NET Templates List and
Checked Add unit tests check box.
Step 5:
- Right Click on Models folder in Solution Explorer => Add
=> Click New Items... => Expand Visual C# from left
pane => Select Code =>Select Class from middle
pane => Type CityViewModels.cs in the Name box => Click Add
Copy Past
following code in CityViewModels.cs
public class CityViewModels
{
public int Id { get; set; }
public string Name { get; set; }
}
Step 6:
- Right Click on Models folder in Solution Explorer => Add
=> Click New Items... => Expand Visual C# from left
pane => Select Code =>Select Class from middle
pane => Type DepartmentViewModels.cs in the Name box =>
Click Add
Copy Past
following code in DepartmentViewModels.cs
public class DepartmentViewModels
{
public int Id { get; set; }
public string Name { get; set; }
}
Step 7:
- Right-click on Models folder in Solution Explorer => Add
=> Click New Items... => Expand Visual C# from left
pane => Select Code =>Select Class from middle
pane => Type DOBValidationAttribute.cs in the Name box
=> Click Add
Copy Past
following code in DOBValidationAttribute.cs
using System;
using System.ComponentModel.DataAnnotations;
public class DOBValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DateTime dob = Convert.ToDateTime(value);
if (dob <= DateTime.Now.AddYears(-18))
return ValidationResult.Success;
else
return new ValidationResult(ErrorMessage);
}
}
Step 8:
- Right-click on Models folder in Solution Explorer => Add
=> Click New Items... => Expand Visual C# from left
pane => Select Code =>Select Class from middle
pane => Type EmployeeViewModels.cs in the Name box =>
Click Add
Copy Past
following code in EmployeeViewModels.cs
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public class EmployeeViewModels
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Gender { get; set; }
public string GenderName { get; set; }
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Date Of Birth")]
[DOBValidation(ErrorMessage = "Date Of Birth must be
18 or above.")]
public DateTime DOB { get; set; } = DateTime.Now.AddYears(-18);
[Required]
[EmailAddress]
[Display(Name = "Email Id")]
public string EmailId { get; set; }
[Required]
[StringLength(10, ErrorMessage = "Mobile number cannot
be greater than 10 digit.")]
[RegularExpression("[0-9]{10}$", ErrorMessage = "Invalid Mobile
number.")]
[Display(Name = "Mobile No")]
public string MobileNo { get; set; }
[Required]
public string Department { get; set; }
public string DepartmentName { get; set; }
[Required]
public string City { get; set; }
public string CityName { get; set; }
public List<DepartmentViewModels> Departments { get; set; }
public List<CityViewModels> Cities { get; set; }
}
Step 9: - Right
Click on Project Root folder =>
Add => New folder => Type name DAL
Step 10:
- Right Click on DAL folder => Add => Click New Items...
=> Expand Visual C# from left pane => Select Code =>Select Class from
middle pane => Type EmployeeContext.cs in the Name box
=> Click Add
Copy
Past following code in EmployeeContext.cs
using MVC_CRUD.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using Newtonsoft.Json;
public class EmployeeContext
{
private SqlConnection _con = new SqlConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString);
private DataSet _dataset = null;
private int _flag;
public int SaveEmployee(EmployeeViewModels employee)
{
try
{
using (SqlCommand cmd = new SqlCommand())
{
_con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_SaveEmployee";
cmd.Connection = _con;
cmd.Parameters.AddWithValue("@Name", employee.Name);
cmd.Parameters.AddWithValue("@Gender", employee.Gender);
cmd.Parameters.AddWithValue("@DOB", employee.DOB.ToString("yyyy-MM-dd"));
cmd.Parameters.AddWithValue("@EmailId", employee.EmailId);
cmd.Parameters.AddWithValue("@MobileNo", employee.MobileNo);
cmd.Parameters.AddWithValue("@Department", employee.Department);
cmd.Parameters.AddWithValue("@City", employee.City);
_flag = cmd.ExecuteNonQuery();
_con.Close();
}
return _flag;
}
catch (Exception ex)
{
throw ex;
}
}
public int UpdateEmployee(EmployeeViewModels employee)
{
try
{
using (SqlCommand cmd = new SqlCommand())
{
_con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_UpdateEmployee";
cmd.Connection = _con;
cmd.Parameters.AddWithValue("@Id", employee.Id);
cmd.Parameters.AddWithValue("@Name", employee.Name);
cmd.Parameters.AddWithValue("@Gender", employee.Gender);
cmd.Parameters.AddWithValue("@DOB", employee.DOB.ToString("yyyy-MM-dd"));
cmd.Parameters.AddWithValue("@EmailId", employee.EmailId);
cmd.Parameters.AddWithValue("@MobileNo", employee.MobileNo);
cmd.Parameters.AddWithValue("@Department", employee.Department);
cmd.Parameters.AddWithValue("@City", employee.City);
_flag = cmd.ExecuteNonQuery();
_con.Close();
}
return _flag;
}
catch (Exception ex)
{
throw ex;
}
}
public int DeleteEmployee(int? Id)
{
try
{
using (SqlCommand cmd = new SqlCommand())
{
_con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_DeleteEmployee";
cmd.Connection = _con;
cmd.Parameters.AddWithValue("@Id", Id);
_flag = cmd.ExecuteNonQuery();
_con.Close();
}
return _flag;
}
catch (Exception ex)
{
throw ex;
}
}
public List<EmployeeViewModels> SelectEmployeeList()
{
List<EmployeeViewModels> employeeList = null;
try
{
using (SqlCommand cmd = new SqlCommand())
{
_con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_SelectEmployeeList";
cmd.Connection = _con;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
_dataset = new DataSet();
da.Fill(_dataset);
}
_con.Close();
}
if
(_dataset.Tables[0].Rows.Count > 0)
{
var jsonString = JsonConvert.SerializeObject(_dataset.Tables[0]);
employeeList = JsonConvert.DeserializeObject<List<EmployeeViewModels>>(jsonString);
}
return employeeList;
}
catch (Exception ex)
{
throw ex;
}
}
public EmployeeViewModels SelectEmployee(int? Id)
{
EmployeeViewModels employee = null;
try
{
using (SqlCommand cmd = new SqlCommand())
{
_con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_SelectEmployee";
cmd.Connection = _con;
cmd.Parameters.AddWithValue("@Id", Id);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
_dataset = new DataSet();
da.Fill(_dataset);
}
_con.Close();
}
if
(_dataset.Tables[0].Rows.Count > 0)
{
var jsonString = JsonConvert.SerializeObject(_dataset.Tables[0]).Replace("[", "").Replace("]", "");
employee = JsonConvert.DeserializeObject<EmployeeViewModels>(jsonString);
}
return employee;
}
catch (Exception ex)
{
throw ex;
}
}
public List<DepartmentViewModels> SelectDepartmentList()
{
List<DepartmentViewModels> departmentList = null;
try
{
using (SqlCommand cmd = new SqlCommand())
{
_con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_SelectDepartmentList";
cmd.Connection = _con;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
_dataset = new DataSet();
da.Fill(_dataset);
}
_con.Close();
}
if
(_dataset.Tables[0].Rows.Count > 0)
{
var jsonString = JsonConvert.SerializeObject(_dataset.Tables[0]);
departmentList = JsonConvert.DeserializeObject<List<DepartmentViewModels>>(jsonString);
}
return departmentList;
}
catch (Exception ex)
{
throw ex;
}
}
public List<CityViewModels> SelectCityList()
{
List<CityViewModels> cityList = null;
try
{
using (SqlCommand cmd = new SqlCommand())
{
_con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_SelectCityList";
cmd.Connection = _con;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
_dataset = new DataSet();
da.Fill(_dataset);
}
_con.Close();
}
if
(_dataset.Tables[0].Rows.Count > 0)
{
var jsonString = JsonConvert.SerializeObject(_dataset.Tables[0]);
cityList = JsonConvert.DeserializeObject<List<CityViewModels>>(jsonString);
}
return cityList;
}
catch (Exception ex)
{
throw ex;
}
}
}
Step 11: - Right
Click on Controllers folder =>
Add => Controller... => Select MVC
5 Controller - Empty => Click Add => Type EmployeeController in Controller Name box => Click Add
Copy Past
following code in EmployeeController.cs
using MVC_CRUD.Models;
using System.Web.Mvc;
using MVC_CRUD.DAL;
using System.Collections.Generic;
using System;
public class EmployeeController : Controller
{
EmployeeContext dal = new EmployeeContext();
[HttpGet]
public ActionResult Index()
{
List<EmployeeViewModels> employeeList =
dal.SelectEmployeeList();
if (Request.IsAjaxRequest())
return PartialView("_EmployeeList", employeeList);
else
return View(employeeList);
}
[HttpGet]
public ActionResult Create()
{
EmployeeViewModels employee = new EmployeeViewModels();
employee.Departments = dal.SelectDepartmentList();
employee.Cities = dal.SelectCityList();
return View(employee);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(EmployeeViewModels employee)
{
if (ModelState.IsValid)
{
dal.SaveEmployee(employee);
}
else
{
employee = new EmployeeViewModels();
employee.Departments = dal.SelectDepartmentList();
employee.Cities = dal.SelectCityList();
return View(employee);
}
return RedirectToAction("Index");
}
[HttpGet]
public ActionResult Edit(int? Id)
{
EmployeeViewModels employee =
dal.SelectEmployee(Id);
employee.Departments = dal.SelectDepartmentList();
employee.Cities = dal.SelectCityList();
return View(employee);
}
[HttpPost]
[ValidateAntiForgeryToken]
[ActionName("Edit")]
public ActionResult Edit_Post(EmployeeViewModels employee)
{
if (ModelState.IsValid)
{
dal.UpdateEmployee(employee);
}
else
{
employee = new EmployeeViewModels();
employee.Departments = dal.SelectDepartmentList();
employee.Cities = dal.SelectCityList();
return View(employee);
}
return RedirectToAction("Index");
}
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Delete(int? Id)
{
int result =
dal.DeleteEmployee(Id);
if (result > 0)
return Json(new { Message = "Record deleted
successfully." }, JsonRequestBehavior.AllowGet);
else
return Json(new { Message = "Record deletion
Failed." }, JsonRequestBehavior.AllowGet);
}
}
Step 12: - Build Project
Step 13: - To Add View
for Action Method, Right Click inside the Index Action body =>
Click Add View… => Type Index in the
View name box => Click Add
Copy Past
following code in Index.cshtml
@model
IEnumerable<MVC_CRUD.Models.EmployeeViewModels>
@{
ViewBag.Title = "Index";
}
<h2>Employee List</h2>
<p>
@Html.ActionLink("Create Employee", "Create")
</p>
<div class="divEmployeeListContainer">
@Html.Partial("_EmployeeList", Model)
</div>
@section
Scripts
{
<script>
$(document).on("click", "#Delete", function () {
var empId = $(this).data("emp-id");
var requestVerificationToken =
$('input[name=__RequestVerificationToken]').val();
$.post("/Employee/Delete", { "Id": empId, "__RequestVerificationToken": requestVerificationToken
}, function (data, textStatus, jqXHR)
{
alert(data.Message);
$.get("/Employee/Index", null, function (data, textStatus, jqXHR)
{
$(".divEmployeeListContainer").empty();
$(".divEmployeeListContainer").html(data);
});
});
});
</script>
}
Step 14: - Expand View
folder => Right Click on Employee folder => Add => View… =>
Type _EmployeeList in the View name box => Checked Create
as a partial view checkbox => Click Add
Copy Past following
code in _EmployeeList.cshtml
@model IEnumerable<MVC_CRUD.Models.EmployeeViewModels>
@Html.AntiForgeryToken()
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model
=> model.Name)
</th>
<th>
@Html.DisplayNameFor(model
=> model.Gender)
</th>
<th>
@Html.DisplayNameFor(model
=> model.DOB)
</th>
<th>
@Html.DisplayNameFor(model
=> model.EmailId)
</th>
<th>
@Html.DisplayNameFor(model
=> model.MobileNo)
</th>
<th>
@Html.DisplayNameFor(model
=> model.Department)
</th>
<th>
@Html.DisplayNameFor(model
=> model.City)
</th>
<th></th>
</tr>
@if (Model != null)
{
foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.HiddenFor(modelItem =>
item.Gender)
@Html.DisplayFor(modelItem =>
item.GenderName)
</td>
<td>
@Html.DisplayFor(modelItem => item.DOB)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.EmailId)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.MobileNo)
</td>
<td>
@Html.HiddenFor(modelItem =>
item.Department)
@Html.DisplayFor(modelItem =>
item.DepartmentName)
</td>
<td>
@Html.HiddenFor(modelItem => item.City)
@Html.DisplayFor(modelItem =>
item.CityName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
<input type="button" name="Delete" id="Delete" value="Delete" class=".button" data-emp-id="@item.Id" />
</td>
</tr>
}
}
else
{
<tr>
<td colspan="8">No Record available to display</td>
</tr>
}
</table>
@*@if (Model != null)
{
var
webGrid = new WebGrid(Model, rowsPerPage: 5);
@webGrid.GetHtml(
tableStyle: "table",
columns: webGrid.Columns(
webGrid.Column(columnName: "Name", header: "Name"),
webGrid.Column(columnName: "GenderName", header:
"Gender"),
webGrid.Column(columnName: "DOB", header: "DOB"),
webGrid.Column(columnName: "EmailId", header: "Email
Id"),
webGrid.Column(columnName: "MobileNo", header: "Mobile
No"),
webGrid.Column(columnName: "DepartmentName", header:
"Department"),
webGrid.Column(columnName: "CityName", header:
"City"),
webGrid.Column(header: "", format:
@<text>
<input
type="hidden" name="Gender" id="Gender"
value="@item.Gender" />
<input
type="hidden" name="Department" id="Department"
value="@item.Department" />
<input
type="hidden" name="City" id="City"
value="@item.City" />
</text>),
webGrid.Column(header: "", format:
@<text>@Html.ActionLink("Edit", "Edit", new { id =
item.Id }) </text>),
webGrid.Column(header: "", format: @<text><input
type="button" name="Delete" id="Delete"
value="Delete" class=".button"
data-emp-id="@item.Id" /></text>)
),
mode: WebGridPagerModes.All
)
}
else
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model
=> model.Name)
</th>
<th>
@Html.DisplayNameFor(model
=> model.Gender)
</th>
<th>
@Html.DisplayNameFor(model
=> model.DOB)
</th>
<th>
@Html.DisplayNameFor(model
=> model.EmailId)
</th>
<th>
@Html.DisplayNameFor(model
=> model.MobileNo)
</th>
<th>
@Html.DisplayNameFor(model
=> model.Department)
</th>
<th>
@Html.DisplayNameFor(model
=> model.City)
</th>
<th></th>
</tr>
<tr>
<td colspan="8">No Record available to
display</td>
</tr>
</table>
}*@
Step 15: - To Add View
for Action Method, Right Click inside the Create Action body => Click Add
View… => Type Create in the View name box =>
Click Add
Copy Past
following code in Create.cshtml
@model
MVC_CRUD.Models.EmployeeViewModels
@{
ViewBag.Title = "Create";
}
<h2>Create Employee</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model
=> model.Name, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.Gender, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.RadioButtonFor(model
=> model.Gender, "M", new { htmlAttributes = new { @class = "form-control" } }) @Html.Label("Male")
@Html.RadioButtonFor(model
=> model.Gender, "F", new { htmlAttributes = new { @class = "form-control" } }) @Html.Label("Female")
@Html.RadioButtonFor(model
=> model.Gender, "O", new { htmlAttributes = new { @class = "form-control" } }) @Html.Label("Other")
@Html.ValidationMessageFor(model
=> model.Gender, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.DOB, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.DOB, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.DOB, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.EmailId, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.EmailId, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.EmailId, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.MobileNo, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.MobileNo, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.MobileNo, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.Department, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model
=> model.Department, new SelectList(Model.Departments, "Id", "Name"), "Select
Department", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.Department, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.City, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model
=> model.City, new SelectList(Model.Cities, "Id", "Name"), "Select City", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.City, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2
col-md-10">
<input type="submit" value="Create" class="btn
btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section
Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Step 16: - To Add View
for Action Method, Right Click inside the Edit Action body =>
Click Add View… => Type Edit in the View name box
=> Click Add
Copy Past
following code in Edit.cshtml
@model
MVC_CRUD.Models.EmployeeViewModels
@{
ViewBag.Title = "Edit";
}
<h2>Edit Employee</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model
=> model.Id)
<div class="form-group">
@Html.LabelFor(model
=> model.Name, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.Gender, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.RadioButtonFor(model
=> model.Gender, "M", new { htmlAttributes = new { @class = "form-control" } }) @Html.Label("Male")
@Html.RadioButtonFor(model
=> model.Gender, "F", new { htmlAttributes = new { @class = "form-control" } }) @Html.Label("Female")
@Html.RadioButtonFor(model
=> model.Gender, "O", new { htmlAttributes = new { @class = "form-control" } }) @Html.Label("Other")
@Html.ValidationMessageFor(model
=> model.Gender, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.DOB, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.DOB, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.DOB, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.EmailId, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.EmailId, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.EmailId, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.MobileNo, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model
=> model.MobileNo, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>
model.MobileNo, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.Department, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model
=> model.Department, new SelectList(Model.Departments, "Id", "Name"), "Select
Department", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.Department, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model
=> model.City, htmlAttributes: new { @class = "control-label
col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model
=> model.City, new SelectList(Model.Cities, "Id", "Name"), "Select City", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model
=> model.City, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2
col-md-10">
<input type="submit" value="Save" class="btn
btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section
Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Step 17: - Copy
Past Connection string in the Web.config under <configuration> Section & do
modification as per your DB Server.
<connectionStrings>
<add name="Default" connectionString="server=ServerName/IP;database=MVC;uid=UserId;pwd=Password" providerName="System.Data.SqlClient" />
</connectionStrings>
Step 18: - Expand App_Start folder
=> Open RouteConfig.cs file => Rename controller value to Employee
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults:
new { controller = "Employee", action = "Index", id = UrlParameter.Optional }
);
Step 19: - DB Script
Copy Past Script in
SQLQuery Window and Run Script
CREATE DATABASE MVC
GO
USE MVC
GO
CREATE TABLE dbo.Employee
(
Id INT
IDENTITY
,Name
VARCHAR(50) NOT NULL
,Gender
CHAR(1) NOT NULL
,DOB
DATE NOT NULL
,EmailId
VARCHAR(50) NOT NULL
,MobileNo
VARCHAR(10) NOT NULL
,Department
TINYINT NOT NULL
,City
TINYINT NOT NULL
)
GO
CREATE TABLE dbo.Department
(
Id INT
IDENTITY
,Name
VARCHAR(50) NOT NULL
)
GO
INSERT INTO dbo.Department(Name)VALUES('IT'),('Admin'),('Finance'),('Sales')
GO
CREATE TABLE dbo.City
(
Id INT
IDENTITY
,Name
VARCHAR(50) NOT NULL
)
GO
INSERT INTO dbo.City(Name)VALUES('Mumbai'),('Delhi'),('Kolkatta'),('Chennai')
GO
CREATE PROCEDURE dbo.proc_SaveEmployee
(
@Name VARCHAR(50)
,@Gender
VARCHAR(10)
,@DOB
VARCHAR(10)
,@EmailId
VARCHAR(50)
,@MobileNo
VARCHAR(10)
,@Department
VARCHAR(20)
,@City
VARCHAR(20)
)
AS
BEGIN
INSERT
INTO dbo.Employee (Name,Gender,DOB,EmailId,MobileNo,Department,City)
VALUES
(@Name,@Gender,@DOB,@EmailId,@MobileNo,@Department,@City)
END
GO
CREATE PROCEDURE dbo.proc_UpdateEmployee
(
@Id INT
,@Name
VARCHAR(50)
,@Gender
VARCHAR(10)
,@DOB
VARCHAR(10)
,@EmailId
VARCHAR(50)
,@MobileNo
VARCHAR(10)
,@Department
VARCHAR(20)
,@City
VARCHAR(20)
)
AS
BEGIN
UPDATE
dbo.Employee
SET Name =
@Name
,Gender =@Gender
,DOB = @DOB
,EmailId = @EmailId
,MobileNo = @MobileNo
,Department =
@Department
,City = @City
WHERE
Id = @Id
END
GO
CREATE PROCEDURE dbo.proc_DeleteEmployee
(
@Id INT
)
AS
BEGIN
DELETE
FROM
dbo.Employee
WHERE
Id = @Id
END
GO
CREATE PROCEDURE dbo.proc_SelectEmployeeList
AS
BEGIN
SELECT
E.Id,E.Name,E.Gender
,CASE WHEN E.Gender = 'M' THEN 'Male'
WHEN E.Gender = 'F' THEN 'Female'
WHEN E.Gender = 'O' THEN 'Other'
END 'GenderName'
,E.DOB,E.EmailId,E.MobileNo,E.Department,D.Name'DepartmentName'
,E.City,C.Name'CityName'
FROM
dbo.Employee E
INNER
JOIN dbo.Department
D ON E.Department
= D.Id
INNER
JOIN dbo.City C
ON E.City = C.Id
END
GO
CREATE PROCEDURE dbo.proc_SelectEmployee
(
@Id INT
)
AS
BEGIN
SELECT
E.Id,E.Name,E.Gender
,CASE WHEN E.Gender = 'M' THEN 'Male'
WHEN E.Gender = 'F' THEN 'Female'
WHEN E.Gender = 'O' THEN 'Other'
END 'GenderName'
,E.DOB,E.EmailId,E.MobileNo,E.Department,D.Name'DepartmentName'
,E.City,C.Name'CityName'
FROM
dbo.Employee E
INNER
JOIN dbo.Department
D ON E.Department
= D.Id
INNER
JOIN dbo.City C
ON E.City = C.Id
WHERE
E.Id = @Id
END
GO
CREATE PROCEDURE dbo.proc_SelectDepartmentList
AS
BEGIN
SELECT
*
FROM
dbo.Department
END
GO
CREATE PROCEDURE dbo.proc_SelectCityList
AS
BEGIN
SELECT
*
FROM
dbo.City
END
GO
ALL Done
RUN Project
Output