Asp.net mvc 水平显示记录ASP.NET MVC

Asp.net mvc 水平显示记录ASP.NET MVC,asp.net-mvc,vb.net,Asp.net Mvc,Vb.net,本质上,我要做的是在一个页面上动态地构建一个数据表,这个页面的宽度是3列,长度是多少 通过一个经典的ASP示例,我已经尝试过了,但并不是所有的记录都显示出来,它们仍然以行而不是列的形式呈现在页面上 以下是我失败的代码: <table width="750" cellpadding="0" cellspacing="0" border="0"> <% Dim recCount As Integer = 0 For Each a In Model.Templates If

本质上,我要做的是在一个页面上动态地构建一个数据表,这个页面的宽度是3列,长度是多少

通过一个经典的ASP示例,我已经尝试过了,但并不是所有的记录都显示出来,它们仍然以行而不是列的形式呈现在页面上

以下是我失败的代码:

<table width="750" cellpadding="0" cellspacing="0" border="0">
<%
Dim recCount As Integer = 0
For Each a In Model.Templates
    If recCount Mod 3 = 0 Then
        If recCount <> 0 Then
            Response.Write("</tr>")
            Response.Write("<tr><td>template found!</td>")
        Else
            Response.Write("<td>template found!</td>")
        End If
    End If
    recCount = recCount + 1
Next
%>
</table>

我不太确定该怎么做,而且我相当确定在查看页面上做起来可能真的很简单

我的另一个选择是设置要创建的有限数量的记录,并在此基础上在页面上构建表,但我更愿意动态地这样做

我想另一种选择是使用中继器控件?虽然我不知道这是否是一个可以与MVC一起工作的控件


提前感谢您的帮助。

很难确切知道您希望从中得到什么,因为您没有提供输出,所以我只提供一些提示

我建议您执行以下操作,因为这将使您的生活更轻松,代码更干净,调试也更简单:

  • 编写一个助手方法,它将为您完成这个逻辑,这样您就不会使视图混乱(http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs)
  • 不要使用
    Response。编写
    ,因为这实际上是回到了经典的ASP时代,而是从助手方法返回一个字符串

然后,您可以非常轻松地单步执行helper方法,并检查返回的字符串是否正确

如果你想使用一些HTMLHelper,你可以搜索MvcContrib项目——它有Html.Grid扩展方法

或者在MVC3中,您可以使用Html.WebGrid方法

或者下面是asp.net mvc上的代码

 <table>
     <tr>
         <% int count = items.Count();
            int additionalCount = count % 3 == 0 ? 0 : 1;
            int countPerColumn = count / 3 + additionalCount; 
            int i = 0;
            foreach(var item in items) 
          { 
             if (i % countPerColumn == 0 && i != 0)  
             {%> 
                 </tr><tr>
          <% } %>
               <td><%= item.Name %></td>
         <% i++; 
           } %>    
    </tr>
 </table>


对不起,我不懂VB.NET。我想我明白你的意思了。您希望在表中每行显示3条记录。对不起,我的VB太差了:

<table...>
<% var templatesCount = Model.Templates.Count %>
<% For i = 0 To templatesCount - 1 Step 3 %>
  <tr>
  <% For j = 0 to 2 %>
    <td>
    <% If i + j < templatesCount %>
      Template Found!
    <% End If %>
  <% Next j %>
    </td>
  </tr>
<% Next i %>
</table>

找到模板!

你能“画”出你的意思吗?您在标题中说“水平显示记录…”,但在文本中您提到了3列宽,但长度不同。表的长度因行数而异,唯一固定的是列数。不幸的是,我们还没有从MVC 2跃升到3:(使用代码(在asp.net MVC上,它将从1变为3:)或者使用MvcContrib库,我不得不稍微修改一下代码,因为它仍然以行的形式将它们打印到屏幕上,但我想我现在就可以做到了。谢谢。这个计划是建立一个助手,一旦我知道我是否可以首先让它工作,然后我会整理它,使它成为一个助手。我将如何使用这个工具访问Model.Templates中的实际值?除此之外,它工作得还不错。
奇怪的是,它们都没有将数据打印回页面。虽然当它只是打印“模板发现”出来,它的工作是一个对待。对不起。怎么样
或者你是否更正了我的c#数组括号?