我是asp.net mvc的新手。我正在显示从linq到sql查询的数据,但不确定如何在2列表中呈现数据列表。
例如。产品清单。我已经看过这个例子,但想知道是否还有其他建议 - http://haacked.com/archive/2010/05/05/asp-net-mvc-tabular-display-template.aspx。
因此,如果我有6件产品退回,我希望它们以这种格式显示在表格中,见下文。
问候
答案 0 :(得分:4)
你也可以使用div而不是表格(这是我要诚实的做法),这会使它变得更加清洁:
<style type="text/css">
.products { width:600px; }
.product { width:280px; margin-right:20px; float:left; height:150px; }
</style>
<div class="products">
<% foreach (var item in Model) { %>
<div class="product">
<%: item.SomeProperty %>
<%: item.AnotherProperty %>
</div>
<% } %>
<div style="clear:left;"></div>
</div>
答案 1 :(得分:1)
这不是最干净的(看起来绝对难看)...但你可以添加一个切换的布尔值,这样你就可以在渲染每个产品时在渲染左右列之间交替。 IE:
<table>
<% bool left = true;
foreach (var item in Model) { %>
<%: left ? "<tr>" : "" %>
<td>
<%: item.SomeProperty %>
</td>
<%: !left ? "</tr>" : "" %>
<% left = !left; } %>
<% if (!left) { //need to end the lastrow if we had an odd number of items %>
<td></td>
</tr>
<% } %>
</table>
可能有更好的方法可以做到这一点,但这是首先想到的。
答案 2 :(得分:0)
这就是我提出的,它不是最干净的代码,但似乎没有明确的方法来做到这一点。
<table>
<%
int productCount = 0;
foreach (var x in Model)
{
productCount++;
if (productCount % 2 == 1)
{
%>
<tr>
<td>
<%=Html.Encode(x.ProductId)%>
</td>
<%
}
else
{
%>
<td>
<%=Html.Encode(x.ProductId)%>
</td>
</tr>
<% }
}
if (productCount % 2 == 1)
{%>
<td> </td></tr>
<%}%>
</table>
答案 3 :(得分:-1)
我认为你要问的是如何编写一个表而不必像haacked.com博客文章那样编写/使用模板。这很简单。只需在视图中键入定义即可。请记住,从某种意义上说,视图只是一个模板,它会带你的模型并吐出html。
使用haacked.com文章,并假设你有一个强类型视图,使用一个包含查询结果的模型,比方说,一个IEnumerable MyData,只需输入你的视图:
<table>
<tr>
<th>
Column Name 1
</th>
<th>
Column Name 2
</th>
</tr>
<% foreach (var x in Model.MyData) { %>
<tr>
<td>
<%: x.Column1 %>
</td>
<td>
<%: x.Column2 %>
</td>
<% } %>
</tr>
</table>
以上假设MyData中的每个对象都有两个属性,Column1和Column2。适应,品味和享受。