如何在MVC 4.0中的View页面上遍历两个viewbag项目

Bhu*_*ake 13 c# asp.net-mvc

我想在MVC 4.0 View页面中显示一个包含以下代码的表:

<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>
Run Code Online (Sandbox Code Playgroud)

这很好.但是,Guardian信息和关联教师信息被放在ViewBag.guardians和Viewbag.assoc等不同的ViewBag对象中.我应该如何循环它们以在必要的表格单元格中显示它们?

循环内的循环就像

   @foreach(var student in ViewBag.students)
  { 
    foreach(var gaurdian in ViewBag.guardians)
    {     
      <tr>

        <td>@student.Name</td>}
        <td>@guardian.Name</td>
      </tr>
    }
  }
Run Code Online (Sandbox Code Playgroud)

听起来很荒谬.请提供适当的解决方案.学生类包含监护人字段,但它有自己的另一个类,如下所示:

      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;}
       }            
Run Code Online (Sandbox Code Playgroud)

jrb*_*jrb 18

你做错了,你应该派一个不同学生作为意见模型.

然后你可以使用student.Name,student.Guardian.Name

在你的例子中,你放弃了学生和监护人之间的关系

如果你保持关系,你可以做

 @foreach(var student in ViewBag.students)
  {            
      <tr>    
        <td>@student.Name</td>
        <td>@student.Guardian.Name</td>
      </tr>        
  }
Run Code Online (Sandbox Code Playgroud)

如果你不关心关系,你可以使用for循环

@for(int i=0; i < ViewBag.Students.Count(); i++)
{
   <tr>    
    <td>@ViewBag.Students[i].Name</td>
    <td>@ViewBag.Guardians[i].Name</td>
  </tr> 
}
Run Code Online (Sandbox Code Playgroud)

当然只要学生有监护人或者你会得到stackoverflow ex :)