Подтвердить что ты не робот

Как прокрутить два элемента 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;}
       }            
4b9b3361

Ответ 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
    }