在2列表中显示数据

时间:2010-10-13 23:43:45

标签: asp.net-mvc asp.net-mvc-2

我是asp.net mvc的新手。我正在显示从linq到sql查询的数据,但不确定如何在2列表中呈现数据列表。

例如。产品清单。我已经看过这个例子,但想知道是否还有其他建议 - http://haacked.com/archive/2010/05/05/asp-net-mvc-tabular-display-template.aspx

因此,如果我有6件产品退回,我希望它们以这种格式显示在表格中,见下文。

alt text 问候

4 个答案:

答案 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>&nbsp;</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。适应,品味和享受。