Как прокрутить два элемента viewbag на страницах просмотра в MVC 4.0
Я хочу отобразить таблицу на странице просмотра MVC 4.0, которая имеет следующий код:
<table >
<thead>
<tr>
<th>Student Name</th>
<th>Gaurdian</th>
<th>Associate Teacher</th>
</tr>
</thead>
@foreach(var stud in ViewBag.students)
{
<tr>
<td>@stud.Name</td>
</tr>
}
</table>
Это прекрасно работает. Но информация Guardian и информация о помощнике учителя помещаются в разные объекты ViewBag, такие как ViewBag.guardians и Viewbag.assoc. Как я должен прокручивать их, чтобы отображать их в необходимых ячейках таблицы?
Петли внутри цикла, например
@foreach(var student in ViewBag.students)
{
foreach(var gaurdian in ViewBag.guardians)
{
<tr>
<td>@student.Name</td>}
<td>@guardian.Name</td>
</tr>
}
}
звучит смешно. Пожалуйста, предоставьте мне правильное решение.
Класс ученика содержит поле опекуна, но у него есть свой собственный класс следующим образом:
public class Student
{
public string Name {get;set;}
public string RollNo {get;set;}
public virtual Guardian Guardian {get;set;}
public IList<Guardian> GuardianName {get;set;}
}
public class Guardian
{
public string Name{get;set;}
public string MobNumber{get;set;}
}
public class Associate
{
public string AID{get;set;}
public virtual Student Student{get;set;}
public string RollNo {get;set;}
}
Ответы
Ответ 1
Вы делаете это неправильно, вы должны отправить ienumerable студентов в качестве модели представлений.
то вы можете использовать student.Name, student.Guardian.Name
В вашем примере вы отбрасываете отношения между учеником и опекуном
Если вы сохраняете отношения, вы можете сделать
@foreach(var student in ViewBag.students)
{
<tr>
<td>@student.Name</td>
<td>@student.Guardian.Name</td>
</tr>
}
если вам не нужны отношения, вы можете использовать цикл for
@for(int i=0; i < ViewBag.Students.Count(); i++)
{
<tr>
<td>@ViewBag.Students[i].Name</td>
<td>@ViewBag.Guardians[i].Name</td>
</tr>
}
Конечно, это работает только до тех пор, пока у учеников есть опекун, или вы получите stackoverflow ex:)
Ответ 2
Посмотрите на это В чем разница между ViewData и ViewBag?
Это означает, что вы можете перебирать элементы ViewBag следующим образом:
@foreach (var viewBagItem in ViewContext.ViewData)
{
// your code
}