我想在 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;}
}
你做错了,你应该发送一个数不清的学生作为视图模型。
然后你可以使用学生。姓名、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>
}
当然,这只有在学生有监护人的情况下才有效,否则你会得到堆栈溢出:)
看看这个 ViewData 和 ViewBag 有什么区别?
这意味着您可以像这样循环浏览ViewBag项目:
@foreach (var viewBagItem in ViewContext.ViewData)
{
// your code
}