Hi I have a mvc application in which I have teacher, courses and techervs courses table , Now i am assigning multiple courses to a signle teacher as show below in my table
Teacher Table:
Courses Table
id |
name |
1 |
Math |
2 |
geography |
TeacherVsCourses:
Id |
course_id |
Teacher_Id |
1 |
1 |
1 |
2 |
2 |
1 |
3 |
3 |
2 |
4 |
1 |
2 |
Now below is my contorller code:
- public ActionResult Index(string sortOrder, string currentFilter, string SearchString, int? page)
- {
- ViewBag.Course_Id = _ITeacherCoruses.PopulateCourses();
- ViewBag.Teacher_Id = _ITeacherCoruses.PopulateTeachers();
- ViewBag.Semester_Id = _ITeacherCoruses.PopulateSemsters();
-
- ViewBag.CurrentSort = sortOrder;
- ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
- ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
- if (SearchString != null)
- {
- page = 1;
- }
- else
- {
- SearchString = currentFilter;
- }
- ViewBag.CurrentFilter = SearchString;
- var dept = from s in db.Teacher_courses
- select s;
- dept =dept.Include(t => t.course).Include(t => t.regs).Include(t => t.semesterName).OrderBy(t => t.Teacher_Id);
- if (!String.IsNullOrEmpty(SearchString))
- {
- dept = dept.Where(s => s.course.Course_Name.Contains(SearchString));
-
- }
- switch (sortOrder)
- {
- case "name_desc":
- dept = dept.OrderByDescending(s => s.course.Course_Name);
- break;
- case "Date":
- dept = dept.OrderBy(s => s.Course_Assignment_date);
- break;
- case "date_desc":
- dept = dept.OrderByDescending(s => s.Course_Assignment_date);
- break;
- default:
- dept = dept.OrderBy(s => s.course.Course_Name);
- break;
- }
- int pageSize = 5;
- int pageNumber = (page ?? 1);
-
- dept = dept.Include(t => t.course).Include(t => t.regs).Include(t => t.semesterName).OrderBy(t => t.Teacher_Id);
-
- return View(dept.ToPagedList(pageNumber, pageSize));
-
- }
below is my view :
- @*@model IEnumerable<CMS_Monitoring.Models.Teacher_courses>*@
- @using PagedList;
- @using PagedList.Mvc;
- @using CMS_Monitoring.Helpers;
- @model PagedList.IPagedList<CMS_Monitoring.Models.Teacher_courses>
- @{
- ViewBag.Title = "Index";
- Layout = "~/Views/Shared/_Layout2.cshtml";
- }
- <h2>Index</h2>
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
- <!-- Required meta tags -->
- <script type="text/javascript">
- setTimeout(function () {
- $('#successMessage').fadeOut('slow');
- }, 12000);
- </script>
- <p>
- @Html.ActionLink("Create New", "Create", "Departments", new { @class = "btn btn-info" })
- </p>
- @if (TempData["UpdatedMessage"] != null)
- {
- <p class="alert alert-success" id="successMessage">@TempData["UpdatedMessage"]</p>
- }
- <p>
- @Html.ActionLink("Create New", "Create")
- </p>
- @using (Html.BeginForm())
- {
- <hr />
- <p>
- Find by Department name: @Html.TextBox("SearchString")
- <input type="submit" value="Search" />
- </p>
- <br /><br /><br /><br />
- if (TempData["DeleteDepartment"] != null)
- {
- <p class="alert alert-success" id="successMessage">@TempData["DeleteDepartment"]</p>
- }
- <table class="table">
- <tr>
- <th>
- @Html.DisplayNameFor(model => model[0].course.Course_Name)
- </th>
- <th>
- @Html.DisplayNameFor(model => model[0].regs.FirstName)
- </th>
- <th>
- @Html.DisplayNameFor(model => model[0].semesterName.Semester_Title)
- </th>
- <th>
- @Html.DisplayNameFor(model => model[0].is_on_Substitute)
- </th>
- <th>
- @Html.DisplayNameFor(model => model[0].Active)
- </th>
- <th>
- @Html.DisplayNameFor(model => model[0].Course_Assignment_date)
- </th>
- <th>
- @Html.DisplayNameFor(model => model[0].Date_Modified)
- </th>
- <th>
- @Html.DisplayNameFor(model => model[0].Added_By)
- </th>
- <th></th>
- </tr>
- @foreach (var item in Model)
- {
- <tr>
- <td>
- @Html.DisplayFor(modelItem => item.course.Course_Name)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.regs.FirstName)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.semesterName.Semester_Title)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.is_on_Substitute)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Active)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Course_Assignment_date)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Date_Modified)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Added_By)
- </td>
- <td>
- @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
- @Html.ActionLink("Details", "Details", new { id = item.Id }) |
- @Html.ActionLink("Delete", "Delete", new { id = item.Id })
- </td>
- </tr>
- }
- </table>
- }
- Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
- @Html.PagedListPager(Model, page => Url.Action("Index",
- new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
but i need to have one row for each teacher with comma separated courses how to pass this to view and bind can someone show complete process i have group it in controller but do not know how to pass to view and use it .see my view result here
https://ibb.co/QkMxPf6