Premium Only Content
Part 10 Working with multiple tables in mvc
In this video we will discuss working with 2 related tables in MVC
1. tblDepartment
2. tblEmployee
This is what we want to achieve
1. Display all the departments from tblDepartments table. The Department names should be rendered as hyperlinks.
2. On clicking the department name link, all the employees in the department should be displayed. The employee names should be rendered as hyperlinks.
3. On clicking the employee name link, the full details of the employee should be displayed.
4. A link should also be provided on the employee full details page to navigate back to Employee list page. Along the same lines, a link should also be provided on the employee list page to navigate back to Departments list page.
Implementing Departments List:
Step 1: Right click on the "Models" folder and add a class file with name=Department.cs. Copy and paste the following code.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
namespace MVCDemo.Models
{
[Table("tblDepartment")]
public class Department
{
public int ID { get; set; }
public string Name { get; set; }
public List[Employee] Employees { get; set; }
}
}
Step 2: Add "Departments" property to "EmployeeContext" class that is present in "EmployeeContext.cs" file in "Models" folder.
public class EmployeeContext : DbContext
{
public DbSet[Department] Departments { get; set; }
public DbSet[Employee] Employees { get; set; }
}
Step 3: Right click on the "Controllers" folder and add a Controller, with name=DepartmentController. Copy and paste the following code.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVCDemo.Models;
namespace MVCDemo.Controllers
{
public class DepartmentController : Controller
{
public ActionResult Index()
{
EmployeeContext employeeContext = new EmployeeContext();
List[Department] departments = employeeContext.Departments.ToList();
return View(departments);
}
}
}
Step 4: Right click on the Index() action method in DepartmentController class and select "Add View" from the context menu. Set
View name = Index
View engine = Razor
Select "Create Strongly-typed view checkbox
Select Department class, from "Model class" dropdownlist
Click "Add" button
Copy and paste the following code in Index.cshtml view file in Department folder
@using MVCDemo.Models;
@model IEnumerable[Department]
[div style="font-family:Arial"]
@{
ViewBag.Title = "Departments List";
}
[h2]Departments List[/h2]
[ul]
@foreach (Department department in @Model)
{
[li]@Html.ActionLink(department.Name, "Index", "Employee",
new { departmentId = department.ID }, null)[/li]
}
[/ul]
[/div]
Changes to Employee List and Detail pages
Add "DepartmentId" propertu to "Employee" model class that is present in Employee.cs file in "Models" folder.
[Table("tblEmployee")]
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
public int DepartmentId { get; set; }
}
Add "departmentId" parameter to Index() action method in "EmployeeController" class that is present in "EmployeeController.cs" file in "Controllers" folder. Use the "departmentId" parameter to filter the list of employees as shown below.
public ActionResult Index(int departmentId)
{
EmployeeContext employeeContext = new EmployeeContext();
List[Employee] employees = employeeContext.Employees.Where(emp =] emp.DepartmentId == departmentId).ToList();
return View(employees);
}
Copy and paste the following line in "Index.cshtml" that is present in "Employee" folder in "Views" folder. With this change we are able to generate an action link to redirect the user to a different controller action method.
@Html.ActionLink("Back to Department List", "Index", "Department")
-
1:34:06
Flyover Conservatives
1 day agoWhy Big Pharma Hides These Healing Secrets! - Jonathan Otto | FOC Show
72.4K9 -
1:35:54
Glenn Greenwald
11 hours agoBiden Welcomes "Hitler" Back To The White House; Trump's Latest Appointments: What Do They Mean?; Jeremy Loffredo On Imprisonment In Israel | SYSTEM UPDATE #365
148K156 -
1:41:41
The Officer Tatum
12 hours agoLIVE: Joe Biden MEETS With "Hitler" as Media CRIES Over Pete Hegseth Becoming Sec of Defense
121K134 -
1:42:59
vivafrei
11 hours agoMAKING AMERICA GREAT AGAIN! Trump's Cabinet Picks Are Making Democrats GO CRAZY!!! Viva Frei Live!
150K69 -
54:56
LFA TV
1 day agoThe Trump Resurgence and Leadership Chaos in Germany | Trumpet Daily 11.13.24 9PM EST
86.6K11 -
55:51
PMG
1 day ago $8.87 earned"Uncovering the Nature of God and Faith!"
65.1K3 -
15:09
Cooking with Gruel
8 hours agoLive in the kitchen!
57.4K -
1:00:40
The StoneZONE with Roger Stone
8 hours agoPresident Trump Makes Triumphant Return to Washington D.C. | The StoneZONE
75K14 -
1:55:27
Tundra Gaming Live
10 hours ago $3.58 earned🛑 Former F-16 Maintainer (Weapons) Plays War Thunder//F-16C and Gamblers Skin Grind🛑
44.7K -
1:40:25
Megyn Kelly
11 hours agoElon and Vivek Prepare For DOGE, Pete Hegseth to Pentagon, and Trump Goes to DC, with Bill Ackman
89.3K69