现在我有了这个代码,它一直枚举到一个单一的列表中。
有没有办法让它在彼此相邻的两个柱子一直到最后?
<table>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%=Html.Encode(item.PartNo)%>
</td>
</tr>
<% } %>
</table>
答案 0 :(得分:4)
您可以将foreach循环更改为for循环以获得更大的灵活性:
<% var itemList = Model.ToList(); %>
<table>
<% for (int i=0; i < itemList.Count; i+=2))
{ %>
<tr>
<td>
<%= Html.Encode(itemList[i].PartNo) %>
</td>
<td>
<% if (i+1 < itemList.Count)
{
Response.Write(Html.Encode(itemList[i+1].PartNo));
}
%>
</td>
</tr>
<% } %>
</table>
如果您正在做很多事情,可以考虑将其转换为HTML助手以输出任意数量的列。
答案 1 :(得分:1)
建立womp的答案,这是一个使用枚举器工作的示例(未经测试!),可以显示任意数量的列。这可能会解决您提到的一些问题。
<table><%
int numberOfColumns = 2;
var enumerator = Model.GetEnumerator();
bool endOfEnumerator = !enumerator.MoveNext();
while(!endOfEnumerator)
{ %>
<tr><%
for (int i = 0; i < numberOfColumns; i++)
{ %>
<td>
<%= Html.Encode(enumerator.Current.PartNo) %>
</td><%
if (!enumerator.MoveNext())
{
endOfEnumerator = true;
break;
}
} %>
</tr><%
} %>
</table>
答案 2 :(得分:-1)
如果您只是在寻找额外的列,则可以保留foreach并添加<td></td>
:
<table>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%=Html.Encode(item.PartNo)%>
</td>
<td>
<%=Html.Encode(item.NextPartNo)%>
</td>
</tr>
<% } %>