Razor查看动态表行

esa*_*ncy 7 html c# html-table razor asp.net-mvc-3

我想在我的视图中有一个表,它将在我的模型中放置每行中的3个元素.所以我要这样做的方法是遍历模型并在foreach循环内部检查我设置的计数变量.如果count mod 3 == 0我会做一些喜欢</tr><tr>开始新行的事情.这不是我想要的方式,因为我会}跟随它<tr>.基本上我的问题是,如何根据模型中每行有3个项目的元素在剃刀视图中创建动态表?

@{
int count = 0;
<div>
<table>
<tr>
@foreach (var drawing in Model)
{
   <td style="width:240px;margin-left:30px; margin-right:30px;">
   <img src="@Url.Action("GetImage", "Home", new { id = drawing.drw_ID })" alt="drawing" /> 
   </td>
   count++;
   if(count%3==0)
   {
      </tr>
      <tr>
   }
} 
</tr>
</table>
</div>
}
Run Code Online (Sandbox Code Playgroud)

也许有一种更简单的方法可以做到这一点,我没想到

eou*_*3hf 14

如何使用两个循环 - 这将使您的文档设置得更好,并使其更具可读性.此外,如果行数不能被三整除,它会处理出现的问题:

<div>
<table>
@for(int i = 0; i <= (Model.Count - 1) / 3; ++i) {
  <tr>
  for(int j = 0; j < 3 && i + j < Model.Count; ++j) {
    <td style="width:240px;margin-left:30px; margin-right:30px;">
      <img src="@Url.Action("GetImage", "Home", new { id = Model[i + j].drw_ID })" alt="drawing" /> 
    </td>
   }
   </tr>
}
</table>
</div>
Run Code Online (Sandbox Code Playgroud)

编辑以反映您粘贴的代码.注意,这假定模型实现IList或数组


小智 7

也许这是你正在寻找的解决方案

 @{ 
int count = 0; 
**
var tr = new HtmlString("<tr>");
var trclose = new HtmlString("</tr>");
**
<div> 
<table> 
<tr> 
@foreach (var drawing in Model) 
{ 
   <td style="width:240px;margin-left:30px; margin-right:30px;"> 
   <img src="@Url.Action("GetImage", "Home", new { id = drawing.drw_ID })" alt="drawing" />  
   </td> 
   count++; 

   if(count%3==0) 
   { 
     **
     trclose 
     tr
     **
   } 
}  
</tr> 
</table> 
</div> 
} 
Run Code Online (Sandbox Code Playgroud)