15

次のコードを含む 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.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>
    }
  }

ばかげているように聞こえます。適切な解決策を教えてください。学生クラスには保護者フィールドが含まれていますが、次のように独自の別のクラスがあります。

      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;}
       }            
4

2 に答える 2

19

あなたはこれを間違ってやっています、あなたはビューモデルとして無数の学生を送るべきです。

次に、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> 
}

もちろん、これは生徒が保護者を持っている場合にのみ機能します。そうしないと、スタックオーバーフローが発生します。例:)

于 2012-11-22T10:20:20.583 に答える
1

これを見てくださいViewData と ViewBag の違いは何ですか?

これは、次のように ViewBag アイテムをループできることを意味します。

    @foreach (var viewBagItem in ViewContext.ViewData)
    {
        // your code
    }
于 2012-11-22T10:28:56.153 に答える