我希望在我的视图中有一个表,它将在我的模型中放置每行中的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>
}
也许有一种更简单的方法可以做到这一点,我没想到
答案 0 :(得分:14)
如何使用两个循环 - 这将使您的文档设置得更好,并使其更具可读性。此外,如果行数不能被3整除,它还会解决出现的问题:
<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>
编辑以反映您粘贴的代码。请注意,这假定模型实现IList
或数组
答案 1 :(得分: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>
}
答案 2 :(得分:2)
检查一下,这对你有用!!!
<h2>Index</h2>
<table>
<tr>
@{
var index = 0;
}
@foreach (int num in Model)
{
if ((index % 10) == 0)
{
@Html.Raw("</tr>");
@Html.Raw("<tr>");
}
<td>
<h2>@num</h2>
</td>
index++;
}
</tr>
</table>
答案 3 :(得分:0)
@christian解决方案对我有用。我不确定&#34; trclose&#34;和&#34; tr&#34;因此在这里发布了一个在剃须刀视图中为我工作的解决方案。
<table>
<tr><td><input type="checkbox" id="chkAssetCategories" /> SELECT ALL</td></tr>
<tr>
@{
var count=0;
foreach (var item in Model.AssetCategories)
{
<td><input type="checkbox" class = "Catgories" id='@item.ID' value ='@item.ID' /><label>@item.Name</label></td>
if (count%5 == 0)
{
@:</tr><tr>
}
count++;
}
}
</table>
答案 4 :(得分:0)
@{ int counter = 0;}
<div>
<table>
@for(int i = 0; i <= (Model.Count - 1) / 3; ++i) {
<tr>
for(int j = 0; j < 3; ++j) {
<td style="width:240px;margin-left:30px; margin-right:30px;">
@Model[counter]
</td>
counter++;
}
</tr>
}
</table>
</div>