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:
| id | name |
| 1 | GGG |
| 2 | CCCC |
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.Teacher_Id = new SelectList(db.Registration, "User_Id", "FirstName");
- 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));
- // || s.FirstMidName.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);
- // var teacher_courses = db.Teacher_courses.Include(t => t.course).Include(t => t.regs).Include(t => t.semesterName).OrderBy(t=>t.Teacher_Id);
- dept = dept.Include(t => t.course).Include(t => t.regs).Include(t => t.semesterName).OrderBy(t => t.Teacher_Id);
- //return View(groupedUsers);
- return View(dept.ToPagedList(pageNumber, pageSize));
- // return View(teacher_courses.ToList());
- }
- @*@model IEnumerable
*@ - @using PagedList;
- @using PagedList.Mvc;
- @using CMS_Monitoring.Helpers;
- @model PagedList.IPagedList
- @{
- ViewBag.Title = "Index";
- Layout = "~/Views/Shared/_Layout2.cshtml";
- }
Index
- @Html.ActionLink("Create New", "Create", "Departments", new { @class = "btn btn-info" })
- @if (TempData["UpdatedMessage"] != null)
- {
class
="alert alert-success" id="successMessage">@TempData["UpdatedMessage"]- }
- @Html.ActionLink("Create New", "Create")
- @using (Html.BeginForm())
- {
- Find by Department name: @Html.TextBox("SearchString")
- "submit" value="Search" />
- if (TempData["DeleteDepartment"] != null)
- {
class
="alert alert-success" id="successMessage">@TempData["DeleteDepartment"]- }
class="table">
- @Html.DisplayNameFor(model => model[0].course.Course_Name)
- @Html.DisplayNameFor(model => model[0].regs.FirstName)
- @Html.DisplayNameFor(model => model[0].semesterName.Semester_Title)
- @Html.DisplayNameFor(model => model[0].is_on_Substitute)
- @Html.DisplayNameFor(model => model[0].Active)
- @Html.DisplayNameFor(model => model[0].Course_Assignment_date)
- @Html.DisplayNameFor(model => model[0].Date_Modified)
- @Html.DisplayNameFor(model => model[0].Added_By)
- @foreach (var item in Model)
- {
- @Html.DisplayFor(modelItem => item.course.Course_Name)
- @Html.DisplayFor(modelItem => item.regs.FirstName)
- @Html.DisplayFor(modelItem => item.semesterName.Semester_Title)
- @Html.DisplayFor(modelItem => item.is_on_Substitute)
- @Html.DisplayFor(modelItem => item.Active)
- @Html.DisplayFor(modelItem => item.Course_Assignment_date)
- @Html.DisplayFor(modelItem => item.Date_Modified)
- @Html.DisplayFor(modelItem => item.Added_By)
- @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
- @Html.ActionLink("Details", "Details", new { id = item.Id }) |
- @Html.ActionLink("Delete", "Delete", new { id = item.Id })
- }
- }
- 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
Ashutosh GuptaPosted Jan 7, 2020, 5:23 AM
Mark TaborPosted Jan 6, 2020, 11:33 PM
Mark TaborPosted Jan 6, 2020, 9:31 PM
Ashutosh Gupta hi can you update my view and controller i am not getting how to achieve it using this approach the first one you are talking about .....
Ashutosh GuptaPosted Jan 6, 2020, 8:30 AM
Mark TaborPosted Jan 6, 2020, 3:38 AM
Ashutosh Gupta although I am making the group in controller code but not able how to use it in view check below code of my group
Mark TaborPosted Jan 6, 2020, 1:26 AM
Ashutosh GuptaPosted Jan 5, 2020, 10:02 PM