Я создал таблицу, в которой я хотел бы показать данные, которые я создал в другой ViewModel. Причина, по которой я создал эти данные в ViewModel, заключается в том, что у меня недостаточно знаний, чтобы объединить все эти данные в одной таблице. Я буду писать только части своего кода, потому что его слишком много:
public class Student
{
[Key]
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string Email { get; set; }
public string Telephone { get; set; }
public string Status { get; set; }
public int IdCourse { get; set; }
public Course Course { get; set; }
}
public class Course
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public decimal Price { get; set; }
public DateTime Date { get; set; }
public int NumberOfStudents { get; set; }
public ICollection<Student> Student { get; set; }
}
public ActionResult Index()
{
return View(db.Students.Include(b => b.Course).ToList());
}
@using StudentCourse.Models
@model List<Student>
<table>
<tr>
<th>Title</th>
<th>NumberOfStudents</th>
<th>Description</th>
<th>Price</th>
<th>Date</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Course.Title<td>
<td>@item.Course.NumberOfStudents</td>
<td>@item.Course.Description</td>
<td>@item.Course.Price</td>
<td>@item.Course.Date</td>
</tr>
}
</table>
Когда студент выбирает определенный курс, я должен одобрить или отклонить его / ее заявку (свойство Status):
@Html.RadioButtonFor(b => b.Status, "Accepted", false) Accepted
@Html.RadioButtonFor(b => b.Status, "Rejected", true) Rejected
Число утвержденных приложений должно отображаться с автоматическим приращением в:
<td>@item.Course.NumberOfStudents</td>
Однако я не могу этого сделать, но мне удалось получить данные в ViewModel с помощью IQueriable / Key / Количество:
ViewModel:
public class StudentCourseGroup
{
public string Title { get; set; }
public int NumberOfStudents { get; set; }
}
public ActionResult Grouping()
{
IQueryable<StudentCourseGroup> grouping = from student in db.Students.Include(d =>
d.Course).Where(d => d.Status == "Accepted")
group student by student.Curse.Title into courseGroup
select new StudentCourseGroup()
{
Title = courseGroup.Key,
NumberOfStudents = courseGroup.Count()
};
return View(data.ToList());
}
Данные показаны в этой таблице, все работает:
@model IEnumerable<StudentCourse.ViewModels.StudentCourseGroup>
<table>
<tr>
<th>
Title
</th>
<th>
Title
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@item.NumberOfStudents
</td>
</tr>
}
</table>
Но я хочу, чтобы NumberOfStudents отображался в соединении большой стол, о котором я упоминал в начале:
<td>@item.Course.Title<td>
<td>@item.Course.NumberOfStudents</td>
<td>@item.Course.Description</td>