现在我有这个枚举到页面一列单列表的代码。枚举到asp.net mvc视图中的两列表
有没有办法让两个colums一直到最后?
<table>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%=Html.Encode(item.PartNo)%>
</td>
</tr>
<% } %>
</table>
现在我有这个枚举到页面一列单列表的代码。枚举到asp.net mvc视图中的两列表
有没有办法让两个colums一直到最后?
<table>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%=Html.Encode(item.PartNo)%>
</td>
</tr>
<% } %>
</table>
你可以改变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辅助输出的任何列数。
如果你只是想找一个额外的列,你可以保持在foreach,只是增加一个<td></td>
:
<table>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%=Html.Encode(item.PartNo)%>
</td>
<td>
<%=Html.Encode(item.NextPartNo)%>
</td>
</tr>
<% } %>
大厦关闭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>
啊是的,谢谢!我养成使用foreach的习惯,忘记使用其他东西! 谢谢! – riverdayz 2010-07-12 19:14:53
我得到一个错误上的i <= Model.Count 说 操作者<=不能被应用到int类型和方法组opperands – riverdayz 2010-07-12 19:18:34
应当Model.Count() – rtalbot 2010-07-12 19:22:42